2016-02-08 3 views
0

У меня есть два модуля и фабрики в обоих, и мне нужно реализовать фабрику из первого модуля в другой модуль.Как ввести завод в другую фабрику в угловом

angular.module('APIs', []) 

.value ("myValue" , "12345") 
.factory('apiUrl',['config','url',apiUrl]) 

function apiUrl(config,url){ 

} 

angular.module('users.service', ['APIs']) 

.factory('userService',['myValue',userService]) 

function userService(apiUrl,myValue){ 

    //login function 
    function login(){ 
     console.log('myValue',myValue) 
     console.log('loginUrl',apiUrl) 
    } 

    return { 
     login:login 

    } 
} 

уведомление: нет проблем, когда я впрыснуть MyValue, но проблема в APIs Factory

и мой журнал:

Error: [$injector:unpr] http://errors.angularjs.org/1.5.0/ $injector/unpr?p0=urlProvider%20%3C-%20url%20%3C-%20apiUrl%20%3C-%20userService at Error (native)

и извините за мой английский.

+0

Ссылка ошибки - https://docs.angularjs.org/error/$injector/unpr?p0=urlProvider%20%3C-%20url%20%3C-%20apiUrl%20%3C-%20userService В сообщении об ошибке указано, что служба url не определена. Где вы определяете сервис 'url'? – georgeawg

ответ

0

Я хотел бы сделать это следующим образом:

  1. При создании factory использования angular.module('app').factory(). Если вы создаете service, используйте angular.module('app').service()
  2. Всегда старайтесь иметь одинаковое имя модуля. Это проще позже, когда у вас есть большое приложение, из-за инъекции зависимости.
  3. Попробуйте сохранить файлы по отдельности, и сцепить его позже, например, с помощью gulpgulp-concat
  4. Пытаться держать все, что вы конфигурационную в app.js файле и, когда вы конкатенацию файла, помните, что этот файл должен быть на вершине.
  5. Я бы сохранил значения и константы в файле app.js или создаст новый файл, например factory или service, и включите его, как я его ввел ниже.

app.js

(function() { 
    'use strict'; 

    var app = angular.module('app', [ 
     // other module 
    ]); 

    app.value('myValue', '12345'); 

    app.constant('myConst', 'some_constant'); 

    app.config(['$interpolateProvider', function ($interpolateProvider) { 
     $interpolateProvider.startSymbol('[['); 
     $interpolateProvider.endSymbol(']]'); 
    }]); 

}()); 

factory.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .factory('apiUrlFactory', apiUrlFactory); 

    apiUrlFactory.$inject = []; 

    function apiUrlFactory() { 

     var self = this; 

     self.url = 'some_url'; 

     return self; 

    } 
}()); 

service.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .service('userService', userService); 

    userService.$inject = ['apiUrlFactory', 'myValue']; 

    function userService(apiUrlFactory, myValue) { 

     var self = this; 

     self.login = function() { 
      console.log('myValue', myValue); 
      console.log('loginUrl', apiUrlFactory.url); 
     }; 

     return self; 

    } 
}()); 

Если у вас есть еще вопросы, не стесняйтесь обращаться ко мне. Также попробуйте руководство по угловому стилю https://github.com/johnpapa/angular-styleguide Это поможет вам.

+0

, когда я использую то же имя модуля, что не работает для меня, почему? – nuruddin

+0

@nuruddin Вы могли бы создать plunkr, вам будет легче помочь – ssuperczynski

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