2016-07-07 3 views
1

Array1のng-repeatを使って複数のチェックボックスを作成しようとしていますが、一致するかどうかによって、 "checked"属性を(ng-checkedを使用して) Array2。2つの配列をng-repeatで比較する

は、ここでは、コントローラ内の配列1を持っている:

$scope.possibleConditions = ["condition1", "condition2", "condition3", "condition4"]; 

、その後、配列2は、同じコントローラからではなく、JSON APIを介してです。

{ 
    "treated" : false, 
    "data" : [{ 
     "conditions" : ["condition1", "condition2"], 
    }] 
} 

これは、テンプレートに設定私の現在のNG-繰り返しである:

<p ng-repeat="condition in possibleConditions">      
    <input type="checkbox" id="{{condition}}" /> 
    <label for="{{condition}}"> 
     {{condition}} 
    </label>    
</p> 

欲求がARRAY1で言う、「条件1」の中で発見された場合などの入力に属性checkedを適用することですArray2からの "条件"。

1:私が試した何


ng-と

.filter('customArray', function($filter){ 
return function(list, arrayFilter, element){ 
    if(arrayFilter){ 
     return $filter("filter")(list, function(listItem){ 
      return arrayFilter.indexOf(listItem[element]) != -1; 
     }); 
    } 
}; 

は、私は私のコントローラの後に(私はstackoverflowの上で見つかった)フィルタを使用して試してみました繰り返し少し修正:

しかし、それは動作しませんでした。

2: ng-repeat内でもう1つのng-repeatを試してみましたが、最初の1つの試合と照合してみました。

例:

<p ng-repeat="conditions in possibleConditions">      
    <input ng-repeat="condition in profileData.data[0].conditions | filter{condition == conditions}" type="checkbox" id="{{condition}}" /> 
    <label ng-repeat="condition in profileData.data[0].conditions | filter{condition == conditions}" for="{{condition}}"> 
     {{condition}} 
    </label>    
</p> 

うまくいけば、誰かが助けることができます/いくつかのガイダンスを指します。 ありがとうございます。あなたが本当にここにフィルタを必要としない

答えて

0

、シンプルngCheckedディレクティブは、仕事ができる:

<p ng-repeat="condition in possibleConditions"> 
    <input type="checkbox" id="{{condition}}" 
     ng-checked="response.data[0].conditions.indexOf(condition) > -1" /> 
    <label for="{{condition}}"> 
    {{condition}} 
    </label> 
</p> 

デモ:http://plnkr.co/edit/fDn0niCCljo5wChzYiwa?p=info

responseはAPIからのデータです。

+0

これは完璧に機能しました!あなたの迅速な対応に感謝します。私はあなたの答えを受け入れるでしょう。 – Jonathan

+0

うれしかったです。 – dfsq

関連する問題