Ng-如果不重新评估ng-repeat内部

时间:2015-05-18 14:38:38

标签: angularjs angularjs-ng-repeat angular-ng-if

我的用户已预先指定了角色。您可以将任何角色分配给任何用户。

  • 如果用户已经拥有角色=>选中复选框 (您可以取消选中以禁用该角色)

  • 如果用户没有角色:你有"添加"按钮将角色添加到用户。 添加角色时,应出现(并选中)复选框

      
  • {{user.name}}             {{角色}}                         
  •     
  
$scope.users = [];
$scope.roles = ["a", "b", "c"];
$scope.users.push({name: "A", roles: [{type: "a", enabled:true}]});
$scope.users.push({name: "B", roles: [{type: "b", enabled:true}]});
$scope.users.push({name: "C", roles: [{type: "b", enabled:true}, {type: "c", enabled:true}]});

$scope.findUserRole = function(userRoles, role){

  for(i in userRoles)
  {
    var userRole = userRoles[i];
    if ( userRole.type === role )
    {
      return userRole;
    }
  }

  return null;

}

$scope.addUserRole = function(roles, role){
  roles.push({type: role, enabled: true});
}

我没有设法在添加角色时显示复选框

你有什么想法吗?

the plunkr:http://plnkr.co/edit/aIROCvAN2YztUdR4C3Pb?p=preview

感谢。

1 个答案:

答案 0 :(得分:2)

ng-init执行一次。正如文档所示,您几乎不应该使用ng-init。

只需避免它并在ng-if:

中获得用户角色
<li> {{role}}  
  <input ng-if="findUserRole(user.roles, role)" type="checkbox" ng-model="userRole.enabled">
  <input ng-if="!findUserRole(user.roles, role)" type="button" ng-click="addUserRole(user.roles, role)" value="add">
</li>