javascript - 单击后 AngularJS "double checking"中的复选框

标签 javascript html angularjs

我正在尝试使用 Angular 制作一个简单的待办事项列表应用程序。当用户单击该复选框时,列表项应该消失。现在,单击复选框后列表项会消失,但其正下方的列表项的复选框也会被选中(尽管列表项不会消失)。

<ul ng-repeat="item in arr track by $index">
    <li>
        <input type="checkbox" ng-click="check(item)">
        <span>{{ item }}</span>
    </li>
</ul>

$scope.arr = [
    'todo 1',
    'todo 2',
    'todo 3'
];

$scope.check = function(item) {
    var indexOf = $scope.arr.indexOf(item);
    if (indexOf !== -1) {
        $scope.arr.splice(indexOf, 1);
    }
};

有什么办法可以解决这个问题吗?

最佳答案

不确定这是如何按原样工作的,但完成此操作的正常方法是使用 ng-model关于<input> 。将您的项目变成对象,以便它们可以存储更复杂的状态,这也可以让您删除 track by .

<ul ng-repeat="item in arr">
  <li>
    <input type="checkbox" ng-model="item.done">
    <span>{{item.label}}</span>
  </li>
</ul>

$scope.arr = [
  {label: 'todo 1', done: false},
  {label: 'todo 2', done: false},
  {label: 'todo 3', done: false}
];

这应该可以正确设置您的检查和取消检查。要在完成后删除项目,我建议使用 ng-repeat 上的文件管理器。 .

ng-repeat="item in arr | filter: {done: 'false'}"

https://plnkr.co/edit/ybikvwysC6ZEd7CeZnnt?p=preview

关于javascript - 单击后 AngularJS "double checking"中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454353/

相关文章:

javascript - 通过 window.open(url ,"_self") 打开页面从 url 获取参数值?

javascript - 如何自定义选择下拉选项

javascript - 刷新后如何让用户登录到 firebase 应用程序?

javascript - Angular.js 方法被调用的次数超出了我的预期

javascript - Grunt Connect 服务器 CSS 文件为空

javascript - 用jquery替换字符

css - 使用纯 CSS 为 webkit 设置样式输入范围

html - Illustrator生成的CSS渐变如何显示?

html - 如何使侧边栏按钮的填充和边距对齐?

javascript - Firefox ToggleButton 的正确用法是什么?