首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS需要在不使用ng-model的情况下将父复选框与子复选框绑定

AngularJS需要在不使用ng-model的情况下将父复选框与子复选框绑定
EN

Stack Overflow用户
提问于 2017-05-09 20:46:45
回答 1查看 137关注 0票数 0

我通过一个API调用使用ng-repeat得到了一个用户列表。对于每个用户,他们是5个类别,每个类别在true/false上获得2-3个授权。

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

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

因此,如果我概括一下:有一个parent(User)child(Category)和大child(Authorization)

我看到我们可以在ng-checked中使用ng-model,但是在我的复选框中,ng-model用于boolean authorization (ng-model="authorization.Enabled"),对于超过1个孩子,这就不再需要工作了。

我该如何处理此案例?需要$watcher吗?

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 21:05:29

您可以在每个子级/孙级子级上使用ng-click。在其中传递父对象(user或cathegory)对象,并根据特定条件修改其布尔值(当所有childs为真或不为真时)您不应该同时使用ng-click和ng-model,您可以通过使用ng-click和ng-click on parent(user或cathegory)复选框来避免这样做。

代码语言:javascript
复制
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指令

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43870239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档