[英]AngularJS: checked attribute in checkbox doesn't work
這是我的代碼:
<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無法正常工作。
從角度文檔
默認情況下,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>
ng-model="array[$index]"
將dom Checked屬性設置為false
您不應將checked與ng-model結合使用。 同樣適用於使用ng-model進行ng檢查。 兩者都修改了復選框選中狀態,這導致了不可預測的行為。
如果您想默認選中復選框,請通過ng-model指令執行。
您正在使用的結構似乎有些奇怪。 未選中您的復選框,因為angular無法匹配該值。
默認情況下,在復選框上使用ng-model時,當用戶與ng-model進行交互時,會在ng-model值中產生true和false。 您可以使用ng-true-value
和ng-false-value
進行更改。 檢查角度文檔 。
如果您將ng-true-value =“ 2”添加到您的復選框,則第二個將首先被選中,因為它以值2開頭。
至於為什么checked
不起作用:當使用ng-checked
或ng-model
將angular綁定到復選框時,它設置了checked
屬性,以便該復選框在瀏覽器中看起來正確-不在乎checked
屬性是什么是第一次綁定時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.