2013-06-19 2 views
0

Я довольно новый с AngularJS, но задавался вопросом, как создавать обычно используемые функции вне сферы действия контроллера.Утилизация функций AngularJS

Например, мне довольно часто нужно вызвать функцию, чтобы запустить «Поворот» (для вызовов RESTful и т. Д.). Я попытался добавить функцию showLoadingModal() в качестве службы, но это только кажется хорошим для получения данных из того, что я видел. Должен ли я добавлять эту функцию ко всем моим контроллерам или как-то создавать функции уровня приложения?

+1

Объясните, что эти данные выглядят хорошими только для получения данных. Услуги - это именно то место, где вы бы определили функции «рециркуляции». Кроме того, существует $ rootScope, на котором вы также можете определить методы, которые будут доступны во всем приложении (если вам не нужно обращаться к этим методам из изолированных областей). – Stewie

ответ

0

Вы можете определить свой общий метод на $ rootScope, который будет доступен через прототипное наследование для любой дочерней области вашего приложения.

Или вы можете определенно определить службу под названием «Утилиты» и просто вводить ее там, где это необходимо. Сервисы хороши для более чем обертывания вызовов для извлечения данных!

Из этих двух подходов я бы рекомендовал последнее. Более проверяемое и меньшее загрязнение $ rootScope.

+0

Спасибо. Я полагал, что услуга была бы лучшей, но не могла понять, как даже запустить предупреждение(). Не могли бы вы дать мне пример того, как сделать сервис, а не просто возвращать данные? Я очень ценю это! – JoshT

+0

Ahh! Угловой защищает глобальный контекст «окна» от вас, когда вы находитесь внутри Углового кода, как реализация службы. Я думаю, вы случайно столкнулись с одним из немногих вещей, которые вы не можете «сделать» обычным способом в службе углов. Чтобы активировать оповещения, вы должны ввести услугу Angular $ window, которая инкапсулирует контекст окна браузера. Затем вы можете вызывать предупреждения, как в $ window.alert(). , , эта страница в документах объясняет, почему они сделали это следующим образом: http://docs-angularjs-org-dev.appspot.com/api/ng.$window – blaster

Смежные вопросы