我有两个单选按钮,应该根据某些条件进行检查。
<input data-ng-checked="user.contract1 || user.contract2" data-ng-model="user.agreed" type="radio" data-ng-value="true"> Yes
<input data-ng-checked="!user.contract1 && !user.contract2" data-ng-model="user.agreed" type="radio" data-ng-value="false"> No
所以在这里,我们有一个模型user.agreed
,它根据用户是否同意而保持真/假:
如果用户同意合同,则user.agreed = true
如果用户未同意任何合同,则user.agreed = false
我注意到,当我加载页面时,单选按钮有时会选择“否”而不是“是”。我认为这与我的数据从服务器加载之前完成的摘要周期有关。
但我认为这样做会是双向绑定,所以如果user
模型发生变化,视图就会改变。从服务器加载数据时,模型会使用新信息进行更新,因此视图应反映此更改。
但那并没有发生。如何强制ng-checked
反映我的模型更改?
修改 控制器代码:
app.controller('TestCtrl', ["QueryService", function(QueryService) {
$scope.user = {
contract1 = false;
contactt2 = false;
};
QueryService.getUser().success(function(user) {
$scope.user = user;
});
});
答案 0 :(得分:2)
您的问题可能是因为ng-checked
和ng-model
。你不能一起使用它们。使用ng-checked
不会设置ng-model
的值,它只会在元素上设置checked
属性。而不是使用ng-checked设置ng-model的值,而是使用相同的name
作为单选按钮,以便它们作为一个组。
你可以这样做:
<input name="agree" data-ng-model="user.agreed" type="radio" data-ng-value="true"> Yes
<input name="agree" data-ng-model="user.agreed" type="radio" data-ng-value="false"> No
并设置初始值
user.agreed = user.contract1 || user.contract2; //Or whatever initial value