角UI状态

角UI状态

问题描述:

基本上我有此控制器:角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”变量,但是有更好的方法还是我的结构错了?

你可以使用一个单独的数组为属性,像这样:

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) { 
       // ... 
      }) 
    } 
});