[英]How should I use Angular services with factories for code reuse?
我有一些Angular控制器,總是需要存儲一組項目,將元素推送到其中並使其可訪問。
我以為那時我可以在工廠中提供一個ServicesModule
來提供這種服務。
所以我得到了這個服務聲明:
angular.module('ServicesModule',[]);
angular.module('ServicesModule')
.factory('newOrdersService', function($rootScope,$http) {
var newOrder = [];
return {
getOrder: function() {return newOrder;},
addItem: function(item) {newOrder.push(item);}
};
});
我得到了使用該服務的控制器示例:
angular.module('app',['ServicesModule']);
angular.module('app').
controller('MainController', function($scope, $http, newOrdersService){
$scope.order = newOrdersService.getOrder();
$scope.addItem = newOrdersService.addItem();
});
但是我無法使其正常工作,似乎從服務中使用getOrder
或addItem
都不會起作用。
我究竟做錯了什么?
我提供一個例子 :
您可以將范圍變量直接綁定到函數。
$scope.addItem = newOrdersService.addItem;
交替:
$scope.addItem = function(item){
newOrdersService.addItem(item);
}
$scope.addItem = newOrdersService.addItem()
不起作用,因為這只會在加載控制器時運行一次addItem。
並且,當您添加新項時,創建一個新對象很重要,否則數組中的對象將繼續綁定到ng-models(當您在文本輸入中輸入內容時會更改)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.