AngularJS: ngChecked 不工作

AngularJS: ngChecked not working

我有以下单选按钮:

<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。但在视图中,该选项未选中。我究竟做错了什么?

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

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

的变量 ngModel

你可以在这个 Plunker 中看到即使 Val1checked="true" 变量 $scope.selected 设置为 Val2 所以 ng-model 胜过 ng-checked http://plnkr.co/edit/nae3b46KNzFKVTqEQPG3?p=preview

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

更多信息:
AngularJS: ng-model not binding to ng-checked for checkboxes
https://docs.angularjs.org/api/ng/directive/ngChecked