6

Я создал службу в angularJS, которая использует модуль btford.socket-io для взаимодействия с сервером. Поскольку в сервисе я реализовал некоторый API, который я использую внутри углового в настоящий момент, но для последующего расширения приложения мне также необходимо предоставить доступ к этим API за пределами угловой области. Чтобы в будущем можно было просто вызвать функцию, не имея необходимости создавать контроллер и другие вещи.Сервисные функции вне области Angularjs

На данный момент я сделал это для контроллера

var myController = angular.element($('body')).scope().myController; 

, сохранив весь контроллер внутри области видимости переменных. Мне было интересно, можно ли сделать то же самое с сервисом.

ответ

11

Как насчет:

angular.element(document.body).injector().get('MyService');

Обычно не добросовестной практики. Но иногда это необходимо.

Примечание: document.body является элементом Ваше угловое приложение устанавливается на

Другая вещь, которую вы могли бы рассмотреть это «закрытие» внешнего API с угловой через завод.

  • eg. верните свой глобальный или именный класс или api с угловой фабрики.

Это по существу то, что угловато для вас. Но вместо того, чтобы сначала создать ссылку внутри углового и ее нужно извлечь, вы должны создать ее снаружи и зарегистрировать ее с помощью DI как фабрики или значения.

+0

Это работает :) Я знаю, что это плохо, потому что я работаю вне угловой сферы. Поскольку я создаю несколько директив с использованием angularjs в качестве фреймворка, и в то же время я также хотел бы использовать сервис для внешнего API-интерфейса разработчика, я думаю, что альтернатив нет. Возможно, переписать API, отделенный от angularjs, будет возможностью, но это повлияет на дизайн архитектуры. – giulio

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