0

ng-repeat通过API电话获得了一个用户列表。对于每个用户,他们有 5 个类别,每个类别获得 2-3 个授权true/false

对于每个user/category/authorization我想要一个将更改授权值的复选框。

当我选中一个用户的复选框时,我希望他的所有 5 个类别 + 所有授权都被选中true,如果我取消选中一个用户的一个或多个授权类别,他的复选框将被选中false

所以,如果我概括一下:有一个parent(User),child(Category)和盛大的child(Authorization)

我看到我们可以使用ng-modelwithng-checked但在我的复选框中,ng-model用于boolean authorization (ng-model="authorization.Enabled")1 个以上的孩子,这不再起作用。

我该如何处理这种情况?需要一个$watcher

谢谢你的帮助 !

4

1 回答 1

0

您可以对每个孩子/孙子使用 ng-click。在其中传递父对象(用户或类别)对象并在特定条件下修改其布尔值(当所有子对象为真或不为真时)你不应该一起使用 ng-click 和 ng-model,你可以通过使用 ng 来避免这样做-选中并 ng-单击父(用户或分类)复选框。

vm.authorizationCheckboxClick = function (user,category, authorization) {
authorization.booleanValue = !authorization.booleanValue;
if (authorization.booleanValue){
    category.booleanValue = true;
    category.authorizations.forEach(function(element) {
      if(!element.booleanValue){
        category.booleanValue = false;
        break;
      }
    }, this);
}
else {
  category.booleanValue = false;
}

if (category.booleanValue){
    user.booleanValue = true;
    user.categories.forEach(function(element) {
      if(!element.booleanValue){
        user.booleanValue = false;
        break;
      }
    }, this);
}
else {
  user.booleanValue = false;
}
}

此示例功能更改授权值,然后更改父类别和用户的布尔值。您可以将此值绑定到 ng-checked 指令

于 2017-05-09T13:05:29.083 回答