【问题标题】:Angular radio buttons are not checked correctly [duplicate]角度单选按钮未正确检查[重复]
【发布时间】:2015-05-26 01:29:37
【问题描述】:

我有两个单选按钮,应该根据某些情况检查它们。

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

});

【问题讨论】:

    标签: javascript angularjs radio-button


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 2013-08-04
      • 2020-06-13
      • 1970-01-01
      • 2019-05-29
      • 2021-10-23
      • 1970-01-01
      • 2021-03-21
      相关资源
      最近更新 更多