2016-07-07 19 views
1

Ich versuche, mehrere Kontrollkästchen mit ng-Wiederholung von Array1 zu erstellen, und ich möchte das "checked" -Attribut (mit ng-checked) auf bestimmte abhängig davon, ob es eine Übereinstimmung gibt Array2.Vergleichen von zwei Arrays mit ng-repeat

Hier haben wir array1 in der Steuerung:

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

und dann array2 aus demselben Controller ist, sondern über JSON-API.

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

Dies ist meine aktuelle ng-Repeat in der Vorlage ein:

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

Der Wunsch ist das Attribut checked mit dem Eingang, wenn, sagen wir, "condition1" in Array1 gefunden wird gelten, in "Bedingungen" von Array2.


Was ich versucht habe:

1: Ich habe versucht, mit einem Filter (die ich auf Stackoverflow gefunden) nach meinem Controller:

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

mit dem ng- wiederhole leicht geändert:

Aber das hat nicht funktioniert.

2: Ich habe versucht, eine andere ng-Wiederholung innerhalb der ng-Wiederholung, dann überprüfen Sie es gegen die erste eine Übereinstimmung.

Beispiel:

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

Hoffentlich kann jemand helfen/Punkt einige Hinweise. Danke.

Antwort

0

Sie brauchen nicht wirklich einen Filter hier, einfach ngChecked Richtlinie könnte funktionieren:

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

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

wo response Ihre Daten von API ist.

+0

Dies funktionierte PERFEKT! Vielen Dank für Ihre schnelle Antwort. Ich werde deine Antwort akzeptieren. – Jonathan

+0

Ich bin froh, dass es nützlich war. – dfsq

Verwandte Themen