2016-09-12 14 views
1

私はどこに問題があるのか​​知っていますが、問題解決のための私の試みは成功しませんでした。どんな助けもありがとうございます。AngularJS異なるサイズと値の選択ボックスng-repeat

ng-repeatループでJSONデータからテーブルを作成しています。表の列の1つは、異なる値とサイズの選択ボックスを表します。このselect文は、ng-repeatブロック内にあります。

   <tr ng-repeat="unit in unitsData"> 
        <td>{{unit.unitName}}</td> 
        <td>{{unit.unitType}}</td> 
        <td> 
         <select class="form-control" ng-model="unit.unit" ng-options="option.value as option.name for option in getUnitListForUnitType(unit.unitType)"></select> 
        </td> 
       </tr> 

このエラーが発生しました:[$ rootScope:infdig] 10 $ digest()繰り返しに達しました。中止!

選択ボックスのAngularドキュメンテーションに基づいて、問題はgetUnitListForUnitType関数から発生します。これは、コントローラで作成したもので、指定されたパラメータに基づいて異なるリストを返すようになっています。このコードをどのように修正できるかは不明です。

答えて

1

問題は、ng-repeatが各アイテムに対してreevalutedを取得し、それ自体がダイジェストサイクルを再度呼び出すことです。これは取得したエラーです。代わりに、呼び出し元の

getUnitListForUnitType(unit.unitType) 

あなたは、たとえば、何とか$スコープ変数を持っている必要があります:

あなたは$ scope.unitListと呼ばれる$スコープ変数を持って
... ng-repeat ... option in unitList[unit.unitType] 

リストのリスト。あなたのクラスをセットアップするときには、そのリストのリストを変数に初期化するだけで、そのトリックにすべきです。

$scope.unitList = { 
    unit1 : ['item1', 'item2'], 
    unit2 : ['item3', 'item4'] 
}; 
+0

これは素晴らしいことですが、関数を変数、リストのリストで置き換えようとします。 – user2217057

+0

すべて正常に動作し、エラーは表示されなくなりました。あなたの時間と助けを感謝します。 – user2217057

+0

うれしい私は助けることができました! – Passersby

関連する問題