映射对象

映射对象

问题描述:

旧代码来显示角侧的无线电盒是这样写之前:映射对象

<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变量数据有一组答案映射。

我在这里丢失了些什么,或者是否还有更多要添加的对象比较?

+0

什么是保存的swer(data [item.name])为收音机? – Deep

+0

对象“item” – Joe

明白这一点,显然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]; 

查看

plunker:http://plnkr.co/edit/83atxi7JGtyBSlRqK2xo?p=preview