如何将工厂注入Angular的另一家工厂
我有两个模块和工厂,我需要从第一个模块到另一个模块实现工厂。
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中存在问题
和我的日志:
错误:[$ injector:unpr] http://errors.angularjs.org/1.5.0/$injector/unpr?p0=urlProvider%20%3-%20url%20%3C-%20apiUrl%20%3C-% 20userService出错(本机)
并为我的英语感到抱歉。
我会这样做:
factory
使用angular.module('app').factory()
。 如果您创建service
使用angular.module('app').service()
gulp
gulp-concat
app.js
文件中的所有配置,并且在连接文件时,请记住,此文件应该位于顶部。 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它会帮助你很多。
链接地址: http://www.djcxy.com/p/77665.html