I am trying create multiple checkboxes using ng-repeat from Array1, and I'd like apply the "checked" attribute (using ng-checked) to certain ones depending if there is a match in Array2.
Here we have array1 in the controller:
$scope.possibleConditions = ["condition1", "condition2", "condition3", "condition4"];
{
"treated" : false,
"data" : [{
"conditions" : ["condition1", "condition2"],
}]
}
<p ng-repeat="condition in possibleConditions">
<input type="checkbox" id="{{condition}}" />
<label for="{{condition}}">
{{condition}}
</label>
</p>
checked
.filter('customArray', function($filter){
return function(list, arrayFilter, element){
if(arrayFilter){
return $filter("filter")(list, function(listItem){
return arrayFilter.indexOf(listItem[element]) != -1;
});
}
};
<p ng-repeat="conditions in possibleConditions | customArray:profileData.data:'conditions' ">
<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>
You don't really need a filter here, simple ngChecked directive could work:
<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
where response
is your data from API.