我现在正在使用两种服务,但只有一种服务取决于加载哪种服务。如果我只加载一个服务,它就可以工作。非此即彼。这些服务也包含在我的app.js
。
一项服务:
(function() {
'use strict';
angular.module('nutricia.services', [])
.service('LoginService', function($http) {
var login = function (apiUrl, apiKey, loginID, password) {
return $http({
method: "POST",
url: apiUrl + "?apiKey=" + encodeURIComponent(apiKey) + "&loginID=" + encodeURIComponent(loginID) + "&password=" + encodeURIComponent(password)
});
};
var logout = function (apiUrl, apiKey, UID) {
return $http({
method: "POST",
url: apiUrl + "?apiKey=" + encodeURIComponent(apiKey) + "&UID=" + encodeURIComponent(UID)
});
};
return {
login: login,
logout: logout
};
})
})();
其他服务:
(function() {
'use strict';
angular.module('nutricia.services', [])
.service('KwaaltjestestService', function($http, $q) {
var getKwaaltjes = function (params) {
var deferred = $q.defer();
$http({
method: 'GET',
url: 'https://www.nutriciavoorjou.nl/mvc/allergytest/' + params
}).then(function successCallback(response) {
deferred.resolve(response.data);
}, function errorCallback(response) {
});
return deferred.promise;
};
return {
getKwaaltjes: getKwaaltjes
};
})
})();
一个控制器:
(function () {
'use strict';
angular.module('nutricia.login', [])
.controller('LoginCtrl', function(LoginService) {
});
})();
其他控制器:
(function () {
'use strict';
angular.module('nutricia.kwaaltjestest', [])
.controller('KwaaltjestestCtrl', function(KwaaltjestestService) {
})
})();
的index.html:
<script src="components/kwaaltjestest/kwaaltjestest.controller.js"></script>
<script src="components/login/login.controller.js"></script>
<script src="shared/services/login.service.js"></script>
<script src="shared/services/kwaaltjestest.service.js"></script>
为什么会这样?如果我删除kwaaltjestest
,则login
服务将有效。如果我删除login
服务,则kwaaltjestest
服务将起作用。更改index.html
中的加载顺序不会改变任何内容。
答案 0 :(得分:2)
因为你有
angular.module('nutricia.services', [])
在这两个文件中,它正在重新定义模块,因此丢失了一个服务(在第一个&#34;版本&#34;中定义了该模块)Angular不会警告您重新定义模块幸运的是,它很容易修复你的html中加载的第二个服务,而不是在.module调用中包含依赖项,只是省略了那些获取现有模块并向其添加新服务。
angular.module('nutricia.services')
许多开发人员只需将模块定义在一个文件中,并且&#34;得到&#34;它在所有实际添加内容的内容中明确了它的定义。