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

Angular ng-repeat filter uncheck all Checkboxes after search

本文关键字:取消 复选框 搜索 ng 过滤器 角度      更新时间:2023-09-26

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

这看起来很容易,但我不知道该怎么做。

需要改变的是

<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,依此类推,重新渲染将保持该状态。

筛选时,将所有选定的复选框保存到一个数组中,并在渲染后迭代该数组并重新选择这些框。