我有一些逻辑,在某些情况下,我希望始终检查第一个复选框。因此,如果用户尝试取消选中它,我想使用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?
答案 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