我正在尝试使用来自Array1的ng-repeat创建多个复选框,并且我想将“checked”属性(使用ng-checked)应用于某些复选框,具体取决于Array2中是否存在匹配。
这里我们在控制器中有array1:
$scope.possibleConditions = ["condition1", "condition2", "condition3", "condition4"];
然后array2来自同一个控制器,但通过JSON API。
{
"treated" : false,
"data" : [{
"conditions" : ["condition1", "condition2"],
}]
}
这是我在模板中设置的当前ng-repeat:
<p ng-repeat="condition in possibleConditions">
<input type="checkbox" id="{{condition}}" />
<label for="{{condition}}">
{{condition}}
</label>
</p>
如果在Array2的“条件”中找到Array1中的“condition1”,则希望将属性checked
应用于输入。
我尝试了什么:
1:我在控制器后尝试使用过滤器(我在stackoverflow上找到):
.filter('customArray', function($filter){
return function(list, arrayFilter, element){
if(arrayFilter){
return $filter("filter")(list, function(listItem){
return arrayFilter.indexOf(listItem[element]) != -1;
});
}
};
稍微修改了ng-repeat:
<p ng-repeat="conditions in possibleConditions | customArray:profileData.data:'conditions' ">
但那没用。
2:我尝试在ng-repeat中使用另一个ng-repeat,然后在匹配的第一个中检查它。
示例:
<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 :(得分: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的数据。