簡體   English   中英

我應該如何在工廠中使用Angular服務以重用代碼?

[英]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();
  });

但是我無法使其正常工作,似乎從服務中使用getOrderaddItem都不會起作用。

我究竟做錯了什么?

我提供一個例子

我把你的朋克分叉了。

您可以將范圍變量直接綁定到函數。

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM