2016-07-16 266 views
0

舊代碼來顯示角側的無線電盒是這樣寫之前:映射對象

<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

回答

0

明白這一點,顯然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> 
0

你可以用這個方法也能達到目的:

$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