映射对象
问题描述:
旧代码来显示角侧的无线电盒是这样写之前:映射对象
<label ng-repeat="item in items" class="col-xs-3">
<input type="radio" name="{{item.name}}"
value="{{item}}"
ng-change="saveRadio(x,y,z)"
ng-model="data[item.name]">
{{item.name}}
</label>
问题是item
是一个对象,功能saveRadio
用于以文本格式保存对象。我们尝试用ng-value
代替value
,如下所示。现在预先选择保存的答案不会发生。代码如下所示:
<label ng-repeat="item in items" class="col-xs-3">
<input type="radio" name="{{item.name}}"
ng-value="item"
ng-change="saveRadio(x,y,z)"
ng-model="data[item.name]">
{{item.name}}
</label>
scope
变量数据有一组答案映射。
我在这里丢失了些什么,或者是否还有更多要添加的对象比较?
答
明白这一点,显然ng-model和ng-value可以存储对象,但不会进行对象比较。具有独特的价值添加NG-检查将预选radiobox像这样:
<label ng-repeat="item in items" class="col-xs-3">
<input type="radio" name="{{item.name}}"
ng-value="item"
ng-checked="item.option == data[item].option)"
ng-change="saveRadio(x,y,z)"
ng-model="data[item.name]">
{{item.name}}
</label>
答
你可以用这个方法也能达到目的:
$scope.items = [{id:1,name:"first"}];
$scope.savedAnswer = {id:1,name:"first"};
var index = $scope.items.map(function(obj, index) {
if(obj.name == $scope.savedAnswer.name) {
return index;
}
}).filter(isFinite);
$scope.preselectedAnswer = $scope.items[index];
查看
什么是保存的swer(data [item.name])为收音机? – Deep
对象“item” – Joe