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