Angular indeterminate复选框指令ng-change问​​题

时间:2016-01-01 20:28:37

标签: angularjs checkbox angularjs-directive

我正尝试通过以下链接在我的应用程序中实现有角度的 data-indeterminate-checkbox 指令。

Example Fiddle

我已将 ng-change 添加到父级和子级复选框(同一事件),以更新下表中的列。问题是,当我选中/取消选中子复选框时,列出现并且消失,并且工作正常,但是当我单击全选复选框时,操作将被反转。也就是说,当选中all all时,隐藏所有列,当取消选中时,所有列都可见。

在上面提到的小提琴链接指令的片段中,在else部分中,如果我将modelCtrl.$setViewValue(hasChecked);更改为modelCtrl.$setViewValue(true);,如下面的代码所示,取消选中部分可以正常工作,即我取消选中“全选”,所有列都被隐藏但是当我检查它时,没有任何反应,它也没有进入ng-change事件。非常感谢任何帮助。

提前致谢,2016年新年快乐!!

// Determine which state to put the checkbox in

if (hasChecked && hasUnchecked) {
    element.prop('checked', false);
    element.prop('indeterminate', true);
    if (modelCtrl) {
        modelCtrl.$setViewValue(false);
    }
} else {
    element.prop('checked', hasChecked);
    element.prop('indeterminate', false);
    if (modelCtrl) {
        modelCtrl.$setViewValue(true);
    }
}

1 个答案:

答案 0 :(得分:0)

通过在复选框的ng-change事件上添加条件来解决它。这是片段 - (根据示例小提琴):

if(!$scope.model.people[0].allEaten){ 
    $timeout(function(){ 
        updateModel(); 
        refreshColumns(); 
    },2000); 
} else { 
    $timeout(function(){ 
        refreshColumns(); 
    },2000); 
}

但如果有更好的答案,请随时评论。 谢谢!