我的AngularJS ng-repeat
过滤器出了问题。
当我使用输入字段过滤ng-repeat时,Angular会自动取消选中所有复选框。
我想选择特定的类别。 列出我拥有的所有类别(超过100个)是不可能的,因此我使用的是搜索过滤器。
"过滤器"角度函数的功能,但它会在搜索后取消选中所有复选框。复选框的布尔值应保持不变。
这是我的代码:
<div ng-switch-when='e_categories'>
<div class="chat-search">
<div class="fg-line">
<input type="text" class="form-control" ng-model="e_categoriesFilter" placeholder="E-Categories filtern">
</div>
</div>
<div vs-repeat>
<div class="checkbox m-10" ng-repeat="e_category in e_categories | filter:e_categoriesFilter">
<label>
<input type="checkbox" ng-model="eCategoryFilter" ng-click='filterByECategories(e_category)' value='@{{ e_category.id }}'>
<i class="input-helper"></i>
@{{ e_category.name }}
</label>
</div>
</div>
</div>
看起来很简单,但我无法弄清楚如何做到这一点。
答案 0 :(得分:2)
需要改变的是
<input type="checkbox" ng-model="eCategoryFilter" ng-click='filterByECategories(e_category)' value='@{{ e_category.id }}'>
到
<input type="checkbox" ng-model="e_category.checked" ng-click='filterByECategories(e_category)' value='@{{ e_category.id }}'>
默认情况下,e_category.checked将默认为false,或者您可以将其初始化为false。当用户选中该复选框时,它将被存储为true,因此重新渲染将保持该状态。
答案 1 :(得分:0)
过滤时,将所有选中的复选框保存到数组中,然后渲染迭代该数组并重新选择框。