Я работаю над несколькими файлами, загружающими модуль, и задерживаюсь, когда дело доходит до передачи моего сервиса моему контроллеру без использования $rootScope
.Inter-Communication (директива для обслуживания контроллеру)
Директива наблюдает за вводом файла и передает файлы onchange
в сервис, где они загружаются и отслеживается процесс загрузки. На основе ответа (от успеха, ошибок и изменений прогресса) родительский контроллер должен показывать большие пальцы и прогресс.
Я не хочу использовать $emit
и $on
на моем $rootScope
, так как мне часто требуется шаблон, и только один родительский контроллер должен знать о загрузках.
Я создал упрощенный (!) Plunkr с дополнительной информацией, чтобы лучше понять проблему.
Есть ли другой способ для моего контроллера реагировать на изменения (происходит внутри фабрики услуг)?
Или, может быть, совсем другой способ достижения такого?
Большое спасибо за ваш очень подробный ответ :) Я просмотрел API обещаний, но у меня есть один вопрос относительно прогресса: я вернул бы обещание и прогресс только после того, как он будет разрешен или отклонен, не так ли? Это означает, что прогресс составляет либо 100, либо 0. Но 'onprogress' - непрерывное событие. И когда мне нужно использовать '$ emit' для прогресса, не имеет смысла использовать события для всего? –
Идея возвращающегося объекта довольно необычна. Другое решение (я предпочел бы) использовать обратные вызовы. Передача обратного вызова службе ('imageService.change (this.handleOnProgress)') и продолжать звонить ему, чтобы сообщить о прогрессе изнутри службы. В настоящее время я выполняю ['prom.progress'] (https://github.com/kriskowal/q#progress-notification) в Угловых обещаниях, но пока не знаю, будет ли он принят/одобрен, и если он получает одобрение, мы не знаем, когда он будет поставляться в любом случае, поэтому, если вам это нужно вовремя, лучше пойдите с обратным вызовом. –
Приятно, спасибо за вашу помощь :) Надеюсь, он получит одобрение. –