0

我有一个用户列表使用ng-repeat通过调用API。 对于每个用户,他们有5个类别,每个类别在true/false上有2-3个授权。AngularJS需要绑定父级复选框与子没有使用ng模型

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

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

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

我看到,我们可以使用ng-modelng-checked但在我的复选框,则ng-model用于boolean authorization (ng-model="authorization.Enabled")和超过1名儿童这个没有更多的工作。

我该如何管理这种情况?需要$watcher

感谢您的帮助!

+0

请用代码示例说明您的问题。 –

+0

http://jsfiddle.net/pio123/624y6/1/ 我需要这个东西,但不使用'ng-model',因为我的'ng-model'已经用于我的authorization.Enabled – MouMou

回答

0

您可以使用ng键单击每个孩子/大孩子。 将父对象(用户或指示对象)传递给它并在特定条件下修改它的布尔值(当所有孩子都是对的时候) 你不应该一起使用ng-click和ng-model,你可以避免这样做在父母(用户或家庭)复选框上使用ng-checked和ng-click。

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检查的指令