AngularJS:复选框中的checked属性不起作用

时间:2016-03-23 16:22:37

标签: javascript angularjs checkbox

这是我的代码:

<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不起作用。

4 个答案:

答案 0 :(得分: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>

答案 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-valueng-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' 不起作用:当角度使用checkedng-checked绑定到复选框时,它会设置ng-model属性以便复选框在浏览器中看起来是正确的 - 它不关心checked属性在第一次绑定时是什么。