2016-03-23 2 views
0

Вот мой код:AngularJS: проверяется атрибут флажок не работает

<body ng-app="app"> 
<div ng-controller="TestController"> 
    <input type="checkbox" checked ng-repeat="num in array track by $index" ng-model="array[$index]" /> 
</div> 
<script type="text/javascript"> 
    var app = angular.module('app', []); 
    app.controller('TestController', function ($scope) { 
     $scope.array = [1, 2, 3, 4]; 
    }); 
</script> 

Я особенно добавить checked атрибут каждого <input> тега, для флажок может установлен по умолчанию. Но в результате ни один из четырех флажков не установлен. Зачем?

Я знаю, если я добавлю, что атрибут ng-checked="num" может сделать проверенную работу, но я все еще удивляюсь, почему естественный проверенный arrtibute не работает.

ответ

0

От angular docs

По умолчанию ngModel часов модели по ссылке, а не значение.

Когда вы говорите array[$index] это дает целочисленное значение, которое вы название модели и ее неправильно

Пожалуйста, сделайте это таким образом

<div ng-controller="TestController"> 
    <input type="checkbox" checked ng-repeat="num in array track by $index" ng-model="array[$index].checked" title="{{array[$index].val}}" /> 
</div> 
<script type="text/javascript"> 
    var app = angular.module('app', []); 
    app.controller('TestController', function ($scope) { 
     $scope.array = [{val:1,checked:true},{val:2,checked:false},{val:3,checked:true},{val:4,checked:true},{val:5,checked:false}]; 
    }); 
</script> 
0

ng-model="array[$index]" устанавливает этот дом проверяется свойство ложным

0

Нельзя комбинировать с ng-моделью. То же самое применяется для ng-check с ng-моделью. Оба изменяют состояние флажка, которое ведет к непредсказуемому поведению.

Если вы хотите, чтобы ваш флажок был установлен по умолчанию, сделайте это с помощью директивы ng-model.

Структура, которую вы используете, кажется немного странной. Вы не отмечены флажками, потому что угловые не могут соответствовать значению.

По умолчанию с использованием ng-модели в галочке будут отображаться значения true и false в значении ng-модели, когда пользователь взаимодействует с ним. Вы можете изменить это, используя ng-true-value и ng-false-value. Проверьте angular documentation.

Если добавить, скажем, нг-значение истина, = «2» к вашим флажков, то второй из них будет изначально выбран потому, что он начинается со значением 2.

0

Насколько почему checked не работает : когда угловой привязывается к флажку с помощью ng-checked или ng-model, он устанавливает атрибут checked, чтобы флажок был корректным в браузере - ему все равно, что атрибут , когда он впервые связывается.

Смежные вопросы