我有一个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过滤器注入到智能表状态,或者在选择了数组过滤器后刷新智能表数据。