В угловом, у меня есть список флажков, которые все привязаны к значению логического значения, которое я получаю из json:
<div ng-repeat="err in rec.errorList"><input type="checkbox" ng-model="err.ignore" name="{{err.errorCode}}" ng-value="err.errorCode" check-all="{{err.errorCode}}" /></div>
Но в то же время, я пытаюсь проверить все эти флажки с тем же именем при проверке одного из флажков!
Каков наилучший способ сделать это угловато? Я имею в виду, есть ли способ привязать все эти флажки с тем же атрибутом имени, например, вместе? Я попытался написать директиву, что-то вроде этого, но не знаю, как я должен продолжать это:
.directive("checkAll", function(){
return {
link: function(scope, element, attr){
element.bind('change', function(){
var errorCode = attr["checkAll"];
var elms = scope.errorCode;
})
}
}
})
Вот плункер того, что я действительно хочу сделать http://plnkr.co/edit/sLXGlXRh9vu7FETDmJd1?p=preview. У меня может быть много списков, и я хочу, чтобы каждый раз, когда я нажимаю на один из этих флажков, обновляю все флажки с тем же errorCode, возможно, без повторного включения всех этих списков ошибок.
Вы можете сделать это, просто используя одну и ту же ng-модель для каждого имени.
Это будет выглядеть так:
контроллер
$scope.errorList = [{errorCode:1},{errorCode:2},
{errorCode:1},{errorCode:3},{errorCode:1},{errorCode:1},
{errorCode:2},{errorCode:1},{errorCode:3},{errorCode:3}];
$scope.checkboxByName = {};
Посмотреть
<div ng-repeat="err in errorList">
<input type="checkbox" ng-model="checkboxByName[err.errorCode]">
</div>
Если вам действительно нужна error.ignore
var для каждой ошибки, вы можете добавить эту функцию:
$scope.updateIgnore = function(){
angular.forEach($scope.errorList, function(error){
error.ignore = $scope.checkboxByName[error.errorCode];
})
}
И изменение ng на всех ваших входах:
ng-change="updateIgnore()"
Вот плункер, показывающий полную реализацию
Надеюсь, это помогло.