Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Глобальные события или drag & drop (https://javascript.ru/forum/angular/39887-globalnye-sobytiya-ili-drag-drop.html)

nerv_ 27.08.2013 23:09

Shitbox2, спасибо, за упоминание :)

Цитата:

Сообщение от Shitbox2
Может и правда, потом вынесу общие функции в отдельный сервис...

)))

Цитата:

Сообщение от Shitbox2
А с новой версией Ангуляра, вообще, не запускается

у меня вроде работает

Цитата:

Сообщение от Shitbox2
У тебя нельзя менять на лету настройки плагина

поясни

Цитата:

Сообщение от Shitbox2
было бы можно, создание клона поля в изолированной области видимости принесло бы проблем)

могу предположить только проблемы с "ловлей" файлов. Хотя они решаются, но лениво :)

Цитата:

Планы на будущее (с вашей помощью ;-)

Общий прогресс для одновременно загружаемых файлов.
Ограничение количества одновременно загружаемых фалов
Уменьшение картинки на клиенте
Отмена загрузки (xhr.abort() и т.п.).
Допиливание загрузчиков для старых браузеров.
- общий прогресс у меня реализован, можешь посмотреть (на локальном сервере, removeAfterUpload = false)
- про ограничение кол-ва загружаемых файлов - теоретически, можно (а можно и в модуль валидаторов добавить)
- уменьшение изображений и валидация - я бы вынес в отдельные сервисы, т.к. работа с изображениями более узкая задача, чем загрузка файлов
- аборты было бы неплохо добавить ...
- не вижу смысла заострять внимание на старых браузерах. Пусть умиратют :)

Shitbox2 28.08.2013 13:55

Цитата:

поясни
Т.е. поменять настройку в любой момент в приложении. Если использовать изолированную область видимости, то после первой же загрузки через iframe клон инпута будет ссылаться на пустой объект с настройками (т.к. новая область видимости ничего о нем не знает). В моем способе модуль постоянно вотчит изменение настройки и конечно же запишет вместо них undefined.
Цитата:

уменьшение изображений и валидация - я бы вынес в отдельные сервисы
Это да. С уменьшением тоже не просто. Пытался сделать через канвас, но мало чего толкового нашел... Плагин бы достать, одна часть которого уменьшает изображение, а другая (опционально) предоставляет интерфейс для обрезки.

Цитата:

не вижу смысла заострять внимание на старых браузерах. Пусть умиратют
Ну, с 8 ИЕ хотя бы с урезанным функционалом :-)

nerv_ 28.08.2013 15:59

Цитата:

Сообщение от Shitbox2
Т.е. поменять настройку в любой момент в приложении. Если использовать изолированную область видимости, то после первой же загрузки через iframe клон инпута будет ссылаться на пустой объект с настройками (т.к. новая область видимости ничего о нем не знает). В моем способе модуль постоянно вотчит изменение настройки и конечно же запишет вместо них undefined.

понял. Как вариант обходить массив и менять "руками". Для себя я пока не вижу особой необходимости, поэтому делать пока не буду )
Актуально только если элементы очереди не удаляются после загрузки и не загружаются автоматически

Цитата:

Сообщение от Shitbox2
С уменьшением тоже не просто

я писал умешение и обрезку в виде лайт плагина для жуквери. Если нужна последняя версия, стучи в личку (лучше его переписать в виде
$( 'img' ).toCanvas( '[crop|resize]', { width: 300, height: 68 }) ) ...;

т.е. сделать работу с ним более прозрачной)

Цитата:

Сообщение от Shitbox2
Ну, с 8 ИЕ хотя бы с урезанным функционалом

ie must die:yes:

Shitbox2 29.08.2013 11:14

Цитата:

я писал умешение и обрезку в виде лайт плагина для жуквери. Если нужна последняя версия, стучи в личку (лучше его переписать в виде
Ну тут можно и без Джиквери) А поменять формат на jpg/png можно будет?

Надергал так же ссылок по кропу и ресайзу. Что-то близко, но нужно ковырять. Записал для памяти, надеюсь, потом займусь)
http://deepliquid.com/content/Jcrop_Manual.html
http://evrone.github.io/evroneCrop/
https://github.com/evrone/evroneCrop
http://odyniec.net/projects/imgareaselect/
http://vredniy.ru/2010/08/uploadify-jcrop-php/
http://habrahabr.ru/post/133351/
https://github.com/odyniec/imgareaselect
http://habrahabr.ru/post/133362/
http://w3pro.ru/article/html-5-canva...chinayushchikh
http://remysharp.com/2007/03/19/a-fe...nd-pluck/#crop
https://developer.mozilla.org/ru/doc...BD%D0%BE%D0%BA

P.S. Часто замечал в твоем коде
this.scope.$$phase || this.scope.$apply();
Каким принципом руководствуешься, когда проверяешь фазу? Просто всегда проверяешь или в случаях, когда появлялись ошибки при тестировании или по другим соображениям?

P.P.S. Не очень понял как твой прогресс устроен. Т.е. просто берешь и делишь прогресс одного файла на количество файлов в очереди. Такая штука работает только если в один момент загружается один файл. На деле же при множественной загрузке загружаются сразу несколько файлов, поэтому прогресс каждого должен добавляться в общий

nerv_ 29.08.2013 22:23

Цитата:

Сообщение от Shitbox2
Ну тут можно и без Джиквери)

я просто пример показал :)

Цитата:

Сообщение от Shitbox2
но нужно ковырять

все просто - завист от кол-ва передаваемых параметров:
- 2 - ресайз
- >2 - кроп (насколько помню)

Цитата:

Сообщение от Shitbox2
Каким принципом руководствуешься, когда проверяешь фазу? Просто всегда проверяешь или в случаях, когда появлялись ошибки при тестировании или по другим соображениям?

если код выполняется вне контекста фрейморка, фазу лучше проверять (по моим личным наблюдениям)

Цитата:

Сообщение от Shitbox2
P.P.S. Не очень понял как твой прогресс устроен. Т.е. просто берешь и делишь прогресс одного файла на количество файлов в очереди. Такая штука работает только если в один момент загружается один файл. На деле же при множественной загрузке загружаются сразу несколько файлов, поэтому прогресс каждого должен добавляться в общий

у меня может загружаться одновременно только один файл. Пока не вижу смысла загружать сразу несколько. Не вижу проблем добавлять прогресс каждого файла в общий. У меня так и есть применительно к одному файлу (при removeAfterUpload = false на локальном сервере).

Shitbox2 30.08.2013 03:13

Цитата:

если код выполняется вне контекста фрейморка, фазу лучше проверять (по моим личным наблюдениям)
А если в контексте, то apply, вообще, не нужен)). Я вот тоже четко не понимаю в каких ситуациях можно попасть в запущенный цикл. Как показывает практика такие ситуации очень редки... Но от чего они случаются — загадка.

Цитата:

у меня может загружаться одновременно только один файл.
О_о А как же многопоточность и все дела? Кстати, обновил плагин. Сделал общий индикатор. Правда, достаточно дубовым способом. Не будет работать, если задержка между уведомлениями прогресса окажется больше 2 с и браузер не будет слишком лажать. Надеюсь, это редкость.

nerv_ 31.08.2013 15:12

Цитата:

Сообщение от Shitbox2
Кстати, обновил плагин

ты хоть ссылки прикладывай, а то пока найдешь :) Я тоже свой обновил: добавил поддержку множественных зон сброса и инпутов с различными настройками (демо)

Цитата:

Сообщение от Shitbox2
А как же многопоточность и все дела?

канал то не резиновый ) Впрочем, если создать несколько экземпляров загрузчика, вероятно, будет многопоточность :D Если ты аргументируешь, зачем в данном случае многопоточность, я тебя выслушаю )

Shitbox2 31.08.2013 17:31

Цитата:

ты хоть ссылки прикладывай, а то пока найдешь
Исправлюсь (гитхаб, демо, песочница) :-)

Цитата:

канал то не резиновый )
Ничего об этом не знаю. Перетащи в демке десяток файлов, увидишь, что штук 5 будут одновременно загружаться. Браузер по умолчанию параллелит процессы)

Цитата:

добавил поддержку множественных зон сброса и инпутов
Ааааа! Зачем всё это? Разве бывают ситуации, когда нужно несколько инпутов для одной модели?)) Кстати, в моем варианте нет на это ограничений... Там инпут и модель соединяются в контроллере и сколько инпутов со сколькими моделями соединить — выбор пользователя. Хотя зачем нужно несколько инпутов...

P.S. А не планируешь добавить сжатие изображений на клиенте (законченную версию, с формированием blob и сохранением на сервере в формате картинки), а я бы у тебя утащил)))

P.P.S. Из руководства
Цитата:

Trying to reenter a $digest or $apply while one of them is already in progress is typically a sign of programming error that needs to be fixed.
Разработчики считают, что ситуации, когда повторно запускается фаза выполнения говорят об ошибках в коде

nerv_ 01.09.2013 19:06

Цитата:

Сообщение от Shitbox2
Ничего об этом не знаю. Перетащи в демке десяток файлов, увидишь, что штук 5 будут одновременно загружаться. Браузер по умолчанию параллелит процессы)

не до конца уверен на этот счет. Допустим, ты перетащил 10 файлов и для каждого из них отправил post запрос. Итого 10 постов у тебя. Все равно быстрее от этого они заливаться не будут (пропускная способность канала), в связи с чем, на мой взгляд, загружать их по одному более естественно. К тому же в подобной реализации возможно прервать загрузки последующих файлов, после того как ряд уже был загружен.

Цитата:

Сообщение от Shitbox2
Ааааа! Зачем всё это? Разве бывают ситуации, когда нужно несколько инпутов для одной модели?

Ну а как ты еще представляешь себе загрузку файлов по разным урлам в рамках одной очереди? https://github.com/nervgh/angular-file-upload/issues/1

Цитата:

Сообщение от Shitbox2
Кстати, в моем варианте нет на это ограничений... Там инпут и модель соединяются в контроллере и сколько инпутов со сколькими моделями соединить — выбор пользователя. Хотя зачем нужно несколько инпутов...

в моей теперь тоже нет ограничений (писал выше). Можешь привести пример кода?

Цитата:

Сообщение от Shitbox2
P.S. А не планируешь добавить сжатие изображений на клиенте (законченную версию, с формированием blob и сохранением на сервере в формате картинки), а я бы у тебя утащил)))

планирую, но немного позднее :) Насчет абортов ничего не выяснить не удалось?

Цитата:

Сообщение от Shitbox2
Разработчики считают, что ситуации, когда повторно запускается фаза выполнения говорят об ошибках в коде

интересная точка зрения. Случайно не видел, используется ли где-нибудь в angular.ui проверка фазы? :D

Shitbox2 02.09.2013 17:18

Цитата:

не до конца уверен на этот счет. Допустим, ты перетащил 10 файлов...
А может быть и быстрее, нужно исследовать. Впрочем, тут с тобой больше согласен. Так лучше, да и разница в скорости по-любому не будет существенной.

Цитата:

Ну а как ты еще представляешь себе загрузку файлов по разным урлам в рамках одной очереди?
О_о Никогда бы не подумал что кому-нибудь будет нужно. Во-первых загрузка одного и того же файла по разным URL в пределах одного сервера — плохое решение. Нельзя такие поощрять. Тут нужно загрузить файл один раз и уже на сервере скопировать куда нужно.

Загрузка одного файла на разные сервера... ИМХО, очень специфичная задача. Может быть какая-то распространенная хитрая оптимизация?

Загрузка очереди по разным URL. Типа кидаешь 5 файлов в таблицу, и они записываются в каждую ячейку. Возможно, но мало кому надо.

Цитата:

Можешь привести пример кода?
Тут лучше смотреть песочницу. У меня каждой директиве
oi-file="options"
можно задать свой объект с настройками. В каждом таком объекте мы задаем колбек
change: function (file) {
  file.$upload(url + data.id, $scope.items[i], data.settings);
}

Из него мы получаем массив файлов и функцию загрузки. Можем теперь хоть каждый файл по отдельном URL загрузить

Цитата:

Насчет абортов ничего не выяснить не удалось?
Пока только отрицательный опыт. Убить загрузку можно, вызвав xhr.abort(). xhr-объект можно записать в объект файла (в твоем случае в item). Поскольку этот объект можно загрузить в область видимости, то можно и аборт оттуда сделать и всё хорошо обрывается. Проблема в том, что при манипуляциях с моделью лезут ошибки именно из-за того, что в модели оказывается ссылка на xhr, а в xhr записана ссылка на модель (циклическая ссылка).

Вот тут как раз думаю сделать как у тебя (в одно время загружается один файл), тогда в xhr можно будет не загружать модель, т.к. и так будет ясно для какой модели загрузился файл.

Цитата:

Случайно не видел, используется ли где-нибудь в angular.ui проверка фазы?
Случайно нигде не видел, чтобы она использовалась))) Более того, в версии 1.2 и из своего кода смог эти проверки выкинуть. Стало и без них работать. (был баг, когда http-запросы копились и уходили не сразу, если цикл не запустить)

nerv_ 04.09.2013 23:21

Цитата:

Сообщение от Shitbox2
О_о Никогда бы не подумал что кому-нибудь будет нужно

я и сам не подумал бы )

Пока не забыл, хочу тут мысль запостить по поводу отправки файлов через $rootScope. Сейчас у меня ситуация такая, директивы ловят файлы и отправляют их в корневой скоп (по твоему совету). Это правильно и удобно, но не позволит создать два экземпляра загрузчика (независимых). Выход - каналы передачи данных. На примере:
<html>
    <head>
        <script>
            app.run(function( $rootScope ) {
                
                $rootScope.$on( 'channel:name1', function() {
                    // some code
                });

                $rootScope.$on( 'channel:name2', function() {
                    // some code
                });
                
            });
        </script>
    </head>

    <div>
        <div ng-file-drop channel="channel:name1"></div>
    </div>
    
    <div>
        <div ng-file-drop channel="channel:name2"></div>
    </div>
</html>

америку я, конечно, не открыл, но вдруг кому пригодится :)

Цитата:

Сообщение от Shitbox2
Во-первых загрузка одного и того же файла по разным URL в пределах одного сервера — плохое решение

не соглашусь

Цитата:

Сообщение от Shitbox2
У меня каждой директиве
oi-file="options"
можно задать свой объект с настройками

теперь у меня тоже (предыдущий релиз) )

Цитата:

Сообщение от Shitbox2
Проблема в том, что при манипуляциях с моделью лезут ошибки именно из-за того, что в модели оказывается ссылка на xhr, а в xhr записана ссылка на модель (циклическая ссылка).

теперь понял откуда у меня ошибки лезли

Цитата:

Сообщение от Shitbox2
Случайно нигде не видел, чтобы она использовалась))) Более того, в версии 1.2 и из своего кода смог эти проверки выкинуть. Стало и без них работать. (был баг, когда http-запросы копились и уходили не сразу, если цикл не запустить)

тоже буду курить в этом направлении, когда время будет. Спасибо :)

Shitbox2 29.09.2013 00:55

Не взяли меня фронтендщиком в Яндекс. Ну и ладно, больше времени на открытые проекты останется)

Обновил загрузчик: https://github.com/tamtakoe/oi.file
Переделал загрузку, общий прогресс и проч. Теперь файлы загружаются по-очереди. Для этого пришлось запилить отдельную очередь для загружаемых файлов. Вынеся в эту же очередь ссылки на xhr, избавился от циклических ссылок, что позволило сделать отмену загрузки :-)

Не стал засорять область видимости, поэтому туда копируется только один объект — очередь. Которая содержит как список загружаемых фалов, так и значения общего прогресса, кол-во загруженных байт и т.п.

Теперь новая версия работает только в Ангуляре 1.2. Для старых версий сделал отдельню версию. Там совсем небольшие отличия.

nerv_ 01.10.2013 20:03

Shitbox2, не грусти, все будет хорошо :)

Цитата:

Сообщение от Shitbox2
Вынеся в эту же очередь ссылки на xhr, избавился от циклических ссылок, что позволило сделать отмену загрузки :-)

немного спогодя спизжу позаимствую у тебя :)

Цитата:

Сообщение от Shitbox2
Теперь файлы загружаются по-очереди

все-таки очередь ) Кстати, https://github.com/nervgh/angular-file-upload/issues/5

Цитата:

Сообщение от Shitbox2
Не стал засорять область видимости, поэтому туда копируется только один объект — очередь

а чем засорял до этого? О_о

Цитата:

queue.lenght
https://github.com/tamtakoe/oi.file

Shitbox2 02.10.2013 19:52

Цитата:

Сообщение от nerv_
а чем засорял до этого? О_о

Полями progressAll, loadedAll, например. Тут логика такая: В каждый элемент модели (связанный с файлом) мы добавляем кучу полей:
fileName
fileThumb
fileSize
fileLoaded
fileProgress
fileUploading

Это оправдано, т.к. половина из них могут и так содержаться и быть полезными в модели (fileName, fileThumb, fileSize). Остальные просто удаляются после окончания загрузки.

С областью видимости всё не так. Сам по себе контроллер ни с какой моделью не связан и добавляя в область видимости кучу полей мы ее сильно замусориваем. Поэтому тут лучший вариант добавить один параметр — модель очереди загрузки и уже с ней работать.

Цитата:

все-таки очередь )
Да. Сравнивал скорость. По сути, одна и та же. Только с параллельной загрузкой больше гемора, когда нужно общий прогресс вычислять :) Еще, если оборвется соединение, то обломается загрузка всех загружающихся файлов. В очереди потеряется только один файл.

Не очень нравится как реализована у меня очередь... С deferred объектами... Думал, этот паттерн поддерживает поочередное выполнение процессов. Похоже, что нет...

nerv_ 02.10.2013 23:35

Цитата:

Сообщение от Shitbox2
Не очень нравится как реализована у меня очередь... С deferred объектами...

вот мы и пришли к событиям :)

Цитата:

Сообщение от Shitbox2
Поэтому тут лучший вариант добавить один параметр — модель очереди загрузки и уже с ней работать.

я бы все-таки добавлял загрузчик, внутри которого очередь и все остальное

Цитата:

Сообщение от Shitbox2
Полями progressAll, loadedAll, например. Тут логика такая: В каждый элемент модели (связанный с файлом) мы добавляем кучу полей:

Цитата:

Сообщение от Shitbox2
Полями progressAll, loadedAll, например. Тут логика такая: В каждый элемент модели (связанный с файлом) мы добавляем кучу полей:
fileName
fileThumb
fileSize
fileLoaded
fileProgress
fileUploading

file.name
file.thumb
file.size
...



Еще у меня есть мысль позаимствовать функции transformResponse для разбора ответа сервера. Что думаешь на этот счет?
Кажется, здесь лежат
$http.defaults.transformResponse

Shitbox2 03.10.2013 06:17

Цитата:

Сообщение от nerv_ (Сообщение 274801)
вот мы и пришли к событиям

Совсем бы не хотелось. События, как мне кажется, это такая штука, которая должна быть связана только с бизнес-логикой, т.е. в основной программе возникают и там же ловятся. Если же каждый плагин будет плодить свои события, можно очень быстро замусорить глобальную область видимости. Если же события будут локальными... Ну и что это за события такие? :-)
----
ИМХО, события нужны для асинхронных вещей: пользователь нажал что-то, кто-то написал в чате и т.п. (мы не создаем запрос). Синхронные вещи — это удел обещаний: запрос к серверу, загрузка файлов (мы создали запрос и ожидаем ответ)

Цитата:

Сообщение от nerv_ (Сообщение 274801)
я бы все-таки добавлял загрузчик, внутри которого очередь и все остальное

Типа твоего uploader? Когда дело до оптимизации дойдет, скорее всего придется общий код в прототип выносить и что-то такое делать... Но не понимаю, зачем, вообще, нужно выносить очередь? Сперва думал вынести в область видимости только информацию об общем прогрессе, а очередь вынес скорее из-за свойства queue.length :-). Ну и типа можно полностью перехватить управление и пересортировать ее, чтобы, например сначала загружались самые маленькие файлы или, вообще, компоновать все мелкие файлы и загружать их в одном запросе... Но это такая чушь, что без нее будет только лучше.

Цитата:

Сообщение от nerv_ (Сообщение 274801)
Еще у меня есть мысль позаимствовать функции transformResponse для разбора ответа сервера. Что думаешь на этот счет?

Эту, как понимаю
function(data) {
  if (isString(data)) {
    // strip json vulnerability protection prefix
    data = data.replace(PROTECTION_PREFIX, '');
    if (JSON_START.test(data) && JSON_END.test(data))
      data = fromJson(data);
    }
    return data;
  }
}

У меня подобным занимается функция-обертка над angular.fromJson
function _parseJSON (data) {
  if (typeof data !== 'object') {
    try {
      return angular.fromJson(data);
    } catch (e) {
      return false;
    }
  }
  return data;
  }
}

В принципе, идея здравая. Правда, не знаю, на сколько оправданы все их проверки. И в моем случае я парсю, только если этого не сделал $http, т.е. и так почти всегда использую дефолтный transformResponse.

nerv_ 03.10.2013 23:39

Цитата:

Сообщение от Shitbox2
События, как мне кажется

не правильно тебе кажется )

Цитата:

Сообщение от Shitbox2
Если же каждый плагин будет плодить свои события

многие жуквери плагины плодят события

Цитата:

Сообщение от Shitbox2
Если же каждый плагин будет плодить свои события, можно очень быстро замусорить глобальную область видимости

1. как можно замусорить область видимости событиями? :)
2.
глобальный_скоп {
    scope {
        2. тут поймали и остановили (чтобы не дошло до глобального скопа)
        scope: {
             1. тут запулили событие вверх
        }
    }
}


Цитата:

Сообщение от Shitbox2
У меня подобным занимается функция

функции. Их может быть много (согласно ангуляру). Опять-таки, зачем писать свою/свои, если можно воспользоваться тем, что есть (моя логика).

Shitbox2 05.10.2013 10:53

Цитата:

многие жуквери плагины плодят события
Думаешь, это идеалогически верный подход? Когда мы не контролируем имена событий, генерируемых плагином и можем случайно получить два события с одинаковым именем из разных источников? Обычно события в жиквери-плагинах имеют вид колбеков (как у меня сделано), либо ограничены только областью видимости плагина и не распространяются вверх $('#pluginTag').on(...)

Цитата:

2. тут поймали и остановили
Интересно как это делается? Кажется в Ангуляре нет средств для остановки событий, т.е. придется свой костыль писать.

Цитата:

Опять-таки, зачем писать свою/свои, если можно воспользоваться тем, что есть (моя логика).
Кто ж спорит?)) Пока не представляю как получить ссылку на встроенную функцию с гарантией, что ее никто не переопределит. Второй вопрос, нужны ли такие навороты для загрузки файлов? Там-то универсальная функция. Может быть для загрузки такая и не нужна.

nerv_ 06.10.2013 03:27

Цитата:

Сообщение от Shitbox2
Думаешь, это идеалогически верный подход?

зависит от обстоятельств

Цитата:

Сообщение от Shitbox2
Когда мы не контролируем имена событий, генерируемых плагином и можем случайно получить два события с одинаковым именем из разных источников?

чего? Если мы их сами генерируем, то почему мы "их не контролируем"? :)

Цитата:

Сообщение от Shitbox2
Обычно события в жиквери-плагинах имеют вид колбеков (как у меня сделано), либо ограничены только областью видимости плагина и не распространяются вверх $('#pluginTag').on(...)

1. коллбек - это коллбек
2. событие - это событие
что мешает сделать пространство имен для событий? Мне, кстати, надо добавить :D

Цитата:

Сообщение от Shitbox2
Интересно как это делается? Кажется в Ангуляре нет средств для остановки событий, т.е. придется свой костыль писать.

event.stopPropagation();


Цитата:

Сообщение от Shitbox2
Пока не представляю как получить ссылку на встроенную функцию с гарантией, что ее никто не переопределит.

1. функции
2. зачем на одну, если можно на массив функций? (например)

Shitbox2 07.10.2013 12:44

Цитата:

Если мы их сами генерируем, то почему мы "их не контролируем"?
Они генерируются в недрах плагина, так что кроме тебя их никто не контролирует :-)

Цитата:

1. коллбек - это коллбек
2. событие - это событие
Любое событие начинается колбеком и заканчивается колбеком)

Цитата:

event.stopPropagation();
Я невнимательный) Тем не менее, тут палка о двух концах. Вызов функции в $on вызывает цикл дайджест, и он будет вызываться даже для тех событий, которые нам не нужны (мы их просто ловим, чтобы остановить)

Цитата:

1. функции
2. зачем на одну, если можно на массив функций? (например)
Можно тут подробнее, как бы ты это сделал?

nerv_ 11.10.2013 14:35

Цитата:

Сообщение от Shitbox2
Я невнимательный) Тем не менее, тут палка о двух концах. Вызов функции в $on вызывает цикл дайджест, и он будет вызываться даже для тех событий, которые нам не нужны (мы их просто ловим, чтобы остановить)

чего? О_о

Цитата:

Сообщение от Shitbox2
Можно тут подробнее, как бы ты это сделал?

немного позднее отвечу

добавь себе https://github.com/nervgh/angular-fi...rollers.js#L11 пригодится )

Shitbox2 18.10.2013 01:53

Цитата:

чего? О_о
Поиграл. Был не прав.

Цитата:

добавь себе
Да, вот как-то не получается красиво это к себе добавить) Будет ли пользоваться спросом? В RESTе это не нужно + у меня идеалогия загрузки такова, что загрузка всегда идет по имеющемуся айдишнику....

DjDiablo 18.10.2013 03:51

https://github.com/nervgh/angular-file-upload
Выглядит интересно.
Мне щас как раз пилить мини галерею картинок с возможность загрузки файлов.
Можно попробывать приспособить :)

nerv_ 21.10.2013 23:58

Цитата:

Сообщение от nerv_
Еще у меня есть мысль позаимствовать функции transformResponse для разбора ответа сервера. Что думаешь на этот счет?
Кажется, здесь лежат
$http.defaults.transformResponse

добавил

Цитата:

Сообщение от DjDiablo
Выглядит интересно.

а я что, я ничего :) Это все Shitbox2

Shitbox2 29.10.2013 21:28

Цитата:

Сообщение от nerv_ (Сообщение 277564)
добавил


а я что, я ничего :) Это все Shitbox2

Скромничаешь))

nerv_ 27.11.2013 16:50

Shitbox2, что думаешь по этому поводу?


Часовой пояс GMT +3, время: 14:42.