如何基于外部过滤器更改Angularjs智能表状态

时间:2019-10-06 11:33:24

标签: javascript angularjs smart-table

我有一个Angularjs智能表,我在其中编写了自己的逻辑来过滤数组项。

之前的逻辑工作正常,因为它是正常的HTML表,没有任何分页,但是当我将自己的数组过滤器与AngularJS Smart Table插件集成时,它无法正常工作,这意味着使用ng-show过滤了项目,因此分页或其他过滤了由于这个问题,收藏价值没有改变。

例如:如果我有25个项目,其中第一页有20个,下一页有5个,那么当我使用自己的过滤器进行过滤时,将过滤掉项目,但状态(例如分页)和所有不起作用的状态仍将保留在第二页中,仅列出其中的所有项目。

阵列过滤器的代码(多选下拉列表):

<multiselect-dropdown model="SelectedStatus" options="Options" idprop="Value" displayprop="Value"></multiselect-dropdown>

我列出行的代码

<tr st-select-row="row" st-select-mode="multiple"
    ng-repeat="row in display_records" | 
    ng-show="([row] | filterByArray:Selecteditem:'itemName').length">

有什么办法可以避免这种ng-show并使过滤器与智能表插件本身一起工作。对于那些我使用正常st-search的文本变量字段,我可以使用它们。

更新(我的阵列过滤代码):

 angular.module("App").filter('filterByArray', function () {
    return function (list, arrayFilter, element) {
        if (!angular.isUndefined(list) && !angular.isUndefined(arrayFilter) && arrayFilter.length > 0) {
            var tempList = [];
            angular.forEach(arrayFilter, function (id) {
                angular.forEach(list, function (listItem) {
                    if (angular.equals(listItem[element], id)) {
                        tempList.push(listItem);
                    }
                });
            });
            return tempList;
        }
        else
        {
            return list;
        }
    };
});

寻找一些解决方案,可以将myArray过滤器注入到智能表状态,或者在选择了数组过滤器后刷新智能表数据。

0 个答案:

没有答案