首页 > 解决方案 > event.target.checked 属性不适用于复选框

问题描述

我有一些在ng-repeat中创建的输入复选框

<li ng-repeat="item in tasks track by $index">
    <input type="checkbox" ng-init="setChecked(item.status)"
           ng-checked="changeStatus(item.id)"
           ng-model="item.status" value="{{item.id}}">
    <span ng-model="item.title" ng-keyup="completeEdit(item.id)"
          contenteditable="false" ng-dblclick="contentEdit()"
          class="done-{{item.status}}">{{ item.title }}
     </span> 
</li> 

我想要实现的是,基于数据项属性,复选框应显示选中或未选中。为此,我正在使用复选框的ng-init。下面是我在ng-init中调用的函数

$scope.setChecked = function(status) {
    event.target.checked = status;            
};

但问题是上述功能没有对复选框进行更改。即使状态真,该复选框也始终显示未选中

谁能告诉我我在上面的代码中做错了什么?

任何帮助表示赞赏:)

标签: angularjsangularjs-ng-repeat

解决方案


要使复选框选中或未选中,我应该使用ng-checked并更新我使用的状态ng-change。这解决了我的问题。

<input type="checkbox" ng-change="changeStatus(item.id)"
       ng-checked="item.status" ng-model="item.status"
       value="{{item.id}}">

推荐阅读