我有以下单选按钮:
<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_id
和option.id
相等。因此,ng-checked内的表达式被评估为true。但在视图中,未选中该选项。我究竟做错了什么?
答案 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