这是我的代码:
<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 :(得分:0)
默认情况下,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>
答案 1 :(得分:0)
ng-model="array[$index]"
将dom checked属性设置为false
答案 2 :(得分:0)
你不应该将检查与ng-model结合起来。同样适用于ng-checked with ng-model。两者都修改了复选框选中状态,导致不可预测的行为。
如果您希望默认情况下选中复选框,请通过ng-model指令进行检查。
您使用的结构似乎有点奇怪。您没有选中复选框,因为角度不能与值匹配。
默认情况下,使用复选框上的ng-model将在用户与其进行交互时在ng-model值中产生true和false。您可以使用ng-true-value
和ng-false-value
进行更改。检查angular documentation。
如果你添加,请说ng-true-value =&#34; 2&#34;在您的复选框中,最初将选择第二个,因为它以值2开始。
答案 3 :(得分:0)
至于为什么select T.name as [TableName], C.name As [ColumnName]
from sys.columns c
inner join sys.tables t
on t.object_id = c.object_id
WHERE t.name = 'MyTable' AND c.is_nullable = 0 AND t.type = 'U'
不起作用:当角度使用checked
或ng-checked
绑定到复选框时,它会设置ng-model
属性以便复选框在浏览器中看起来是正确的 - 它不关心checked
属性在第一次绑定时是什么。