2016-12-22 16 views
0

所以我有处理输入[type = checkbox]上的点击事件的这段代码片段。我想要实现的是手动设置checked属性,具体取决于条件scope.vm.checkedRows.indexOf(orderId) === -1(这里错误/真正的赋值被反转来表示),但它不起作用。在点击处理程序中手动检查复选框输入

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以防止默认行为,并手动检查/取消选中复选框。你知道这段代码有什么问题吗?

+0

event.preventDefault()?并删除返回false? – AthMav

+0

尝试过,结果是相同的 – dragonfly

+0

为什么不做相反的事情?如果它的错误或假如它真的离开它,则取消它 – AthMav

回答

0

也许你可以直接在ng-checked中放置一个表达式,然后在控制器的点击操作中完成其余的操作。它会动态设置检查值

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