角度复选框使用ng-click重置绑定到复选框的ng模型,从而防止取消选中该复选框

时间:2014-06-26 06:35:40

标签: angularjs checkbox angular-ngmodel

我有一些逻辑,在某些情况下,我希望始终检查第一个复选框。因此,如果用户尝试取消选中它,我想使用ng-click将绑定的ng-model更改为“true”。但是复选框仍未被取消选中....

如何实现保持复选框仍然根据ng-model的值进行检查,而不使用angular.element(elem).attr(“checked”,true)等

<input type = 'checkbox' ng-model = 'checkboxValue' ng-click = "handler"/>
控制器中的

$scope.checkboxValue = false;
$scope.handler = function(){
    $scope.checkboxValue = true;
}

我希望复选框保持选中状态,因为ng-model checkboxValue是真的......但显然我错过了一些东西

这是羽毛球:http://plnkr.co/edit/WbjZilFLDfbP3mQ4oMgx?p=preview

我进入调用堆栈,看起来我将ng-model设置为true,然后在$ digest期间,ng-model根据复选框的状态设置:选中或取消选中。所以它更像是单向绑定:根据复选框状态绑定ng-model?

4 个答案:

答案 0 :(得分:5)

只需使用ng-change代替ng-click

这是DEMO

答案 1 :(得分:1)

如果您不想允许用户取消选中该复选框,则可以使用ng-disabled指令。

从你的插上带叉子的插头。 http://plnkr.co/edit/Y2kUYN2F5bZboaPJWMd8?p=preview

答案 2 :(得分:1)

为什么不简单地使用ng-change在每次更改复选框状态时调用某些逻辑?

答案 3 :(得分:0)

您可以通过checkboxValue查看更改,然后根据需要更改它,而不是通过ng-click挂钩。如果你想要复选框最初为false的行为,然后在点击后永远为true,你可以执行以下操作:

$scope.checkboxValue = false;
$scope.$watch('checkboxValue', function(newValue, oldValue){
    $scope.checkboxValue = newValue || oldValue;
});

以下是您的plunker所需的更改: http://plnkr.co/edit/XPZXSzsnaZDGlIi8mxnM?p=preview