2014-11-24 63 views
1

基本上我有此控制器:角UI狀態

angular.controller('AddUsersCtrl', function ($scope, UsersService) { 
    $scope.users = []; 

    function toggleUser (user) { 
     user._toggled = !user._toggled; 
    } 

    function addAll() 
     var users = $scope.users; 

     UsersService 
      .addMany(users) 
      .success(function (response) { 
       // ... 
      }) 
    } 
}); 

這是一個用戶可以在其中一次添加多個用戶的控制器,並且每個用戶可以切換(基本上它的切換是視圖用於切換用戶信息的UI狀態)

但是,您可以看到,addAll函數引用作用域上的用戶,然後從UsersService調用「addMany」方法。在這一點上,_toggled變量應該被過濾掉,否則它也會將「_toggled」發送到後端。

現在一個簡單的解決方案是循環遍歷用戶並刪除「_toggled」變量,但是有更好的方法還是我的結構錯了?

回答

1

你可以使用一個單獨的數組爲屬性,像這樣:

angular.controller('AddUsersCtrl', function ($scope, UsersService) { 
    $scope.users = []; 
    $scope.toggledUsers = {}; 

    function toggleUser (user) { 
     $scope.toggledUsers[user] = !$scope.toggledUsers[user]; 
    } 

    function addAll() 
     var users = $scope.users; 

     UsersService 
      .addMany(users) 
      .success(function (response) { 
       // ... 
      }) 
    } 
});