ng-if 里面的 ng-repeat 没有被重新评估

Ng-if inside ng-repeat is not re evaluated

我的用户有预先分配的角色。您可以将任何角色分配给任何用户。


$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});
}

我在添加角色时无法显示复选框

你有什么想法吗?

笨蛋:http://plnkr.co/edit/aIROCvAN2YztUdR4C3Pb?p=preview

谢谢。

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>