2016-07-11 29 views
1

ng-repeatを使用してラジオボタンリストを実装しようとしています。 typeList.htmlAngularJS双方向データバインディングがディレクティブで正しく機能しない

<div ng-repeat="type in types" > 
    <input type="radio" id={{type.id}} name="{{type.name}}" ng-model="result" ng-value="type.id" > 
    {{type.name}} 
    <div> Result {{result}} </div> //result is changing only in the row of clicked radio-button. It should change in every row.(two way data-binding). 
</div> 

指令:

angular.module('app').directive('myList',function(){ 
     return{ 
      restrict: 'A', 
      scope: { 
       types: '=', //here list is passed to be printed with ng-repeat 
       result: '=' //here I want to store which radio-button was selected last time by id 
      }, 
      templateUrl: 'html/typeList.html' 
     }; 


    }); 

指令はスコープを分離しています。私は2つのパラメータを渡しています。ラジオボタンと、親スコープ内で答えを格納する結果オブジェクト(id - 最後にクリックされたラジオボタン)を表示するリスト。残念ながら、ラジオボタンをクリックするたびに私の結果はローカルでのみ変更されます。

Passing parameters to my directive. 
<div my-list types="list" result="selected"></div> 



    Passed list and result paramater from controller to myList directive. 

$scope.list = [ 
     { id: 1, name:'Name 1' }, 
     { id: 2, name:'Name 2' }, 
     { id: 3, name:'Name 3' } 
    ]; 

$scope.selected = -1; 

私は何か助けに感謝します。

+0

htmlコードにディレクティブをどのように追加して表示することができますか? – Chinni

+0

確かに、私はそれを更新しました。 – Dago

+0

'list'には何が入っていますか? – Chinni

答えて

1

のようなオブジェクトとしてスコープ変数を持ってしてみてください。ちょうどselectedを参照のためにオブジェクトに入れてください。

コントローラで使用しています。 'html/typeList.html'

<div ng-repeat="type in types" > 
    <input type="radio" id={{type.id}} ng-model="result.selected" ng-value="type.id" > 
    {{type.name}} 
</div> 
Result {{result.selected}} 

Fiddle Demo

作業れる

$scope.list = [{ 
    id: 1, 
    name: 'Name 1' 
    }, { 
    id: 2, 
    name: 'Name 2' 
    }, { 
    id: 3, 
    name: 'Name 3' 
    }]; 
    $scope.ctrlModel = { 
    selected: -1 
    } 

とマークアップでは、それがお役に立てば幸いです。

+0

ありがとうございます。出来た! – Dago

+0

@ダゴ私はそれが助けてうれしいです。 :) –

0

は、次の2つの戦争は、結合のための参照を取得するためにモデルに非プリミティブオブジェクトを渡す必要が

$scope.types = { list: {}, selected: 'radioValueThatNeedsToBeSelected' }

関連する問題