角度ng-repeat过滤器在搜索后取消选中所有复选框

时间:2016-02-23 09:15:14

标签: javascript jquery angularjs checkbox

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

看起来很简单,但我无法弄清楚如何做到这一点。

2 个答案:

答案 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)

过滤时,将所有选中的复选框保存到数组中,然后渲染迭代该数组并重新选择框。