未正确检查角度单选按钮

时间:2015-05-26 01:29:37

标签: javascript angularjs radio-button

我有两个单选按钮,应该根据某些条件进行检查。

<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;
    });

});

1 个答案:

答案 0 :(得分:2)

您的问题可能是因为ng-checkedng-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