在单击处理程序中手动检查复选框输

时间:2016-12-22 11:32:12

标签: javascript jquery html angularjs dom

所以我有这个代码片段来处理输入[type = checkbox]上的点击事件。我想要实现的是手动设置checked属性,具体取决于if条件scope.vm.checkedRows.indexOf(orderId) === -1(这里将false / true赋值转换为点),但它不起作用。

link: function(scope, element) {
    element.on('click', '.csv-ignore input', function(event) {
        scope.$apply(function() {
            var orderId = angular.element(event.target).closest('tr').data('order-id')
            if (scope.vm.checkedRows.indexOf(orderId) === -1) {
                scope.vm.checkedRows.push(orderId);
                event.target.checked = false;
            } else {
                scope.vm.checkedRows.splice(scope.vm.checkedRows.indexOf(orderId), 1);
                event.target.checked = true;
            }
        });
        return false;
    })
}

未选中/取消选中复选框。我发现有趣的是,然后我评论return false它工作正常。但是,我最初添加return false以防止默认行为并手动选中/取消选中复选框。你知道这段代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

也许您可以直接在ng-checked中放置一个表达式,并在点击时在控制器中执行其余操作。它将动态设置检查值

<input type="checkbox" ng-model="item" ng-checked="(vm.checkedRows.indexOf(orderId) !== -1)">