難以向其他服務注入服務。爲了簡潔和封裝,我想要一個服務層次結構,我可以向/從父服務傳遞/請求邏輯。模塊內的角度服務
因此,例如,我有一個userService,並且我想讓userService管理用戶的toDoList。所以我創建了一個toDoService,並且我希望控制器通過將請求傳遞給userService來繼承toDoService,從而爲用戶添加一個toDo。下面是我有:
// app.js
angular.module('myApp', [
// other dependencies...
'myApp.myServices'
]);
// services/toDoService.js
angular.module('myApp.myServices', [])
.factory('toDoService', function($http) {
getStuff = function(userId) {
// returns $http call
};
addStuff = function(userId, data) {
// returns $http call
};
});
// services/userService.js
angular.module('myApp.myServices', [])
.factory('userService',
['$http', 'toDoService', function(
$http, toDoService) {
addToDo = function(data) {
toDoService.addStuff(user.uid, data)
.then(function(success) {
// apply bindings
})
.catch(function(error) {
// display error
});
};
getToDos = function(data) {
toDoService.getStuff(user.uid)
.then(function(success) {
// apply bindings
})
.catch(function(error) {
// display error
});
};
}]);
控制器的工作原理用戶與UserService,並從toDoService代碼工作時,它最初是在userService。但是,當我創建toDoService並將代碼移動並封裝它時,角度抱怨toDoService。
錯誤:[$注射器:unpr]未知提供商:toDoServiceProvider < - toDoService < - userService
我檢查腳本引用,並且所有的腳本都正確包括在內。例如<script src='/[..]/toDoService.js' />
等...
所以我想知道是否有可能將服務注入同一模塊內的其他服務?我的命名約定是否是一個問題?
好的,我將創建一個單獨的文件'/ services/myService.js',並且我需要引用服務在聲明中引入模塊嗎?例如'angular.module('myApp.myServices',['userService','toDoService'])'? – kmunky
不可以。您只需使用'angular.module('myApp.myServices',[])''定義它。數組中的內容不屬於該模塊的服務。這是myApp.services依賴的其他模塊名稱。不要將服務與模塊混淆。 –