AngularJS:ngChecked不起作用

时间:2015-11-06 13:22:53

标签: javascript html angularjs angularjs-ng-checked

我有以下单选按钮:

<input type="radio" ng-value="option.text" ng-model="selected.value" name="option" ng-checked="poll_post.poll_option_id == option.id">

我已经双重检查poll_post.poll_option_idoption.id相等。因此,ng-checked内的表达式被评估为true。但在视图中,未选中该选项。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

你不应该同时使用ngModel和ngChecked ngChecked是一种单向绑定,即它只会检查表达式的值并相应地设置输入,但如果更改输入的值,它将不会将值传递给它绑定的变量。
另一方面,ngModel将检查它所绑定的变量的值,并在输入改变时设置变量的值。
ngChecked优于ngModel的优势在于您可以使用表达式而不是变量。

但是,如果两者都存在ngModel胜过ngChecked(ngChecked优先级为100而ngModel优先级为1,则在此处搜索“priority”:https://docs.angularjs.org/api/ng/service/ $ compile)并且ngChecked表达式的更改不会传递给变量ngModel绑定到

您可以在此Plunker中看到,即使Val1 checked="true" $scope.selected,变量Val2也设置为var accessTypes = [ { title: 'Alla', icon: 'fa-globe' }, { title: 'Vänner', icon: 'fa-group' }, { title: 'Privat', icon: 'fa-eye' } ]; ,因此ng-model胜过ng-checked {{3 }}

如果您想以编程方式更改复选框的状态您应该编辑已绑定ng-model的变量,或删除ng-model并仅保留ng-checked(这取决于您正在做什么)。 / p>

了解更多信息:
http://plnkr.co/edit/nae3b46KNzFKVTqEQPG3?p=preview
AngularJS: ng-model not binding to ng-checked for checkboxes