Angular позволяет службе объявлять другие услуги как зависимости, используя конструктор, используемый при создании самого себя.
Чтобы объявить зависимости, нам необходимо указать их в объявлении метода фабрики и использовать атрибут $ inject (массив идентификации строки) или использовать обозначения массива в методе завода.
Обычно объявление о недвижимости $ инъекции может быть отброшено (то есть неявная инъекция зависимости, упомянутая в //www.vevb.com/article/91815.htm, но это экспериментальное свойство и потерпет неудачу после сжатия и запутывания, пожалуйста, используйте его с осторожностью!).
Используйте обозначения массива
Функция mymodulecfgfn ($ предоставлена) {$ предоставление.factory ('myservice', ['dep1', 'dep2', function (dep1, dep2) {}]);}Используйте недвижимость $ inject
function mymodulecfgfn ($ предоставьте) {var myservicefactory = function (dep1, dep2) {}; myservicefactory. $ inject = ['dep1', 'dep2']; $ предоставлять. Factory ('MyService', MyServiceFactory); }Использование неявного DI (несовместимо с сжатием кода)
Функция mymodulecfgfn ($ предоставлена) {$ предоставление.factory ('myservice', function (dep1, dep2) {});}Вот пример, где есть две услуги, и между ними есть зависимости, а также некоторые другие услуги, предоставляемые Angular.
/*** Service BatchLog позволяет сообщениям сформировать очередь в памяти, промывая один раз каждые 50 секунд. * * @param { *} Сообщение сообщения для регистрации. */ function batchlogmodule ($ предоставление) {$ guide.factory ('batchlog', ['$ timeout', '$ log', function ($ timeout, $ log) {var message quepue = []; function log () {if (messagequeue.length) {$ log ('batchlog messages:', messagequeue); log (); / *** RouteTemplAteMonitor контролирует изменения каждого маршрута, и каждый Bi'ANU будет записывать его через сервис BatchLog*/ $ предоставление. Factory ('routeTemplomateMonitor', ['$ route', 'BatchLog', '$ rootscope', функция ($ route, batchlog, $ rootscope) {$ rootscope. batchlog ($ route.current? $ route.current.template: null); } // Получите основную службу, запустите приложение (прослушайте событие) angular.injector ([batchlogmodule]). Get ('routetemplatemonitor');Что следует отметить в примере:
Выше приведено сборник информации о зависимости от AngularJS, управляющих услугами. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!