2016-07-16 6 views
0

前角側にラジオ・ボックスを表示する古いコードは次のように書かれた:問題はitemオブジェクトと関数であっマッピングオブジェクト(Angularjs)

<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> 

saveRadioは、オブジェクトをテキスト形式で保存するために使用されます。 valueng-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

オブジェクト「アイテム」は、 – Joe

答えて

0

明らかに、ng-modelとng-valueはオブジェクトを格納できますが、オブジェクト比較はしません。 NG-チェックするユニークな値での追加そうのようなラジオボックスを事前に選択します:

<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]; 

ビュー

をプランナー:http://plnkr.co/edit/83atxi7JGtyBSlRqK2xo?p=preview