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 时,这些变量可能不是唯一的,并且只会导致设置最后一项。
我正在使用 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 时,这些变量可能不是唯一的,并且只会导致设置最后一项。