【问题标题】:Angular: Correctly show which radio is selected initiallyAngular:正确显示最初选择的收音机
【发布时间】:2015-11-10 19:26:16
【问题描述】:

我有以下 Plunker:http://plnkr.co/edit/5mfYvsko2cW1SS66CqJC?p=preview。当它加载时,最初选择的值为[true],但不会选择相应的收音机。如果我取消注释以下行:

$scope.selected = $scope.items[1].value;

然后将显示正确的收音机。我知道这是 Javascript 如何处理与数组的相等比较的结果。不幸的是,在我的实际情况下,我看不到任何合理的方法来确保分配相同的对象。有没有其他方法可以让正确的收音机显示为在初始加载时选择的?

【问题讨论】:

  • 您的对象的值似乎有错误,请查找更新后的plnkr,已将 ng-init 添加到标签中,如果您想将其删除,请取消注释第 22 行。
  • 感谢您的回答。我还应该指定我想尝试将值保留为当前格式。他们使用一些自动表格,我需要做的翻译越少越好。
  • 在这种情况下,请删除您的 plunker 中的第 22 行和第 23 行,并将第 27 行替换为以下行

标签: javascript angularjs radio-button


【解决方案1】:

请在plunker找到更新的答案

已修改范围

  $scope.items = [
    {value: 'false', name: 'False'},
    {value: 'true', name: 'True'},
    {value: 'neither', name: 'False or true'}
  ];

和html

  <label ng-repeat="item in items" ng-init="selected='true'">
    <input type="radio" ng-model="selected" ng-value="item.value" >
    {{ item.name }}
  </label>

【讨论】:

    【解决方案2】:

    好吧,没有任何完美的解决方案,但这是我所采用的:

    $scope.selected = {value: [true], name: 'True'};
    $timeout(function () {
      $('input[type="radio"]').each(function () {
        if ($scope.selected.value.toString() === this.value) {
          this.checked = true;
        }
      });
    });
    

    我还发现了这个answer,在大多数情况下这将是一个不错的选择。它引用的 plunker 不必像开头那样将 $scope.selectedOption.value 作为字符串。

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2011-06-04
      • 2017-07-22
      • 1970-01-01
      • 2012-10-16
      相关资源
      最近更新 更多