#angularjs #angular-filters
#angularjs #angular-фильтры
Вопрос:
Json
$scope.tmp = {
'ax':{
label:'AX',
checked:false
},
'by':{
label:'BY',
linkTo:'ax',
checked:false
},
'xy':{
label:'BY',
linkTo:'by',
checked:false
}
}
Мне нужно проверить родительский элемент, отмечен ли какой-либо из его дочерних элементов, и если родительский элемент выбран, то дочерний элемент также выбирается с помощью атрибута linkTo.
Я попробовал приведенный ниже код
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="v.linkTo != undefined ? tmp[k].checked=tmp[v.linkeTo].checked:{tmp[k].checked = (tmp | filter : {linkTo:k}).checked }">Linked With {{obj.label}}
</div>
Комментарии:
1. Где родительский флажок?
2. Родительский и дочерний элементы, созданные в ng-repeat, но при одновременном нажатии любого из родительских флажков дочерний элемент будет проверен, и эта логика, определенная в ng-change.
3. можете ли вы создать для него планку.?
4. @Viplock вы можете посмотреть демо здесь jsfiddle.net/Lt7aP/3519
5. Итак, в вашем случае ‘ax’ является родительским для ‘by’, а ‘by’ является родительским для ‘xy’?
Ответ №1:
Вы должны создать для него функцию для обработки активности изменения. Попробуйте использовать это —
<div ng-app ng-controller="TController">
<div ng-repeat='(k,v) in tmp'>
<input type="checkbox" ng-model="tmp[k].checked" ng-change="change(v.linkTo,k)">{{k}} Linked With {{v.linkTo}} <br />
</div>
</div>
И метод, подобный этому
$scope.change=function(linkto,k){
if(linkto!=undefined){
$scope.tmp[linkto].checked=$scope.tmp[k].checked;
}
else{
angular.forEach($scope.tmp, function (value, key) {
if (value.linkTo === k) {
value.checked=$scope.tmp[k].checked;
}
})
}
}
Попробуйте этот Js Fiddel
Комментарии:
1. Спасибо @Viplock, он работает с функцией, но ее можно встроить в ng-изменить для случая динамического ключа в массиве, используя опцию фильтра.
2. да, вы можете сделать это встроенным, но если условие сложное, вам не следует использовать встроенное условие, потому что вы не сможете исправить ошибку, такую как опечатка, синтаксическая или логическая проблема.