ng-repeat 单选按钮 2 向绑定问题,只有最后一项设置正确

ng-repeat radio button 2-way binding issue, only last item set correctly

我正在使用 angularjs 通过以下代码重复单选按钮组。

<div class="row observation-point"
         ng-repeat="observationPoint in question.observationPointList">
        <div class="col-md-6 col-sm-6">
            <small>{{observationPoint.text}}</small>
        </div>
        <div class="col-md-4 col-sm-4 col-md-offset-2 col-sm-offset-2">
            <label class="radio-inline">
                <input type="radio" ng-disabled="observation.status != 'Open'"
                       name="{{domain.id}}-{{question.id}}-{{observationPoint.id}}"
                       id="{{domain.id}}-{{question.id}}-{{observationPoint.id}}-1" ng-value="true"
                       ng-model="observationPoint.observed">{{'observation-domain.html.yes' | translate}} {{observationPoint.observed}}
            </label>
            <label class="radio-inline">
                <input type="radio" ng-disabled="observation.status != 'Open'"
                       name="{{domain.id}}-{{question.id}}-{{observationPoint.id}}"
                       id="{{domain.id}}-{{question.id}}-{{observationPoint.id}}-0" ng-value="false"
                       ng-model="observationPoint.observer">{{'observation-domain.html.no' | translate}}
            </label>


        </div>
    </div>

在 angular 1.2.28 中工作正常,但是我们最近升级到 1.4.2,现在结果如下图所示。

模型值在变量中正确保存和恢复(见图像中的真值和假值),但在重新加载页面后仅选中了 ng-repeat 中的最后一个单选按钮。

为什么会这样,因为我真的不明白问题是什么以及如何解决这个问题。

注意。 observationPoint.observer 包含布尔值而不是字符串

编辑:我创建了一个简化的 plunker,当然这是按预期工作的:S http://plnkr.co/edit/tWjizHB8I5FNZVOgdq6J?p=preview

这表明命名或 ID 有问题。 但是,当我检查开发人员工具时,ID 和名称似乎没问题

我找到了一个解决方案,如果我从

更改动态名称
name="{{domain.id}}-{{question.id}}-{{observationPoint.id}}"

name="observationPoint_{{observationPoint.id}}"

它工作顺利。我认为存在某种 loading/timing 问题。在呈现 UI 时,这些变量可能不是唯一的,并且只会导致设置最后一项。