У меня есть Angularjs Smart Table, где я написал свою собственную логику для фильтрации элементов массива.
Раньше логика работала нормально, потому что это была обычная HTML-таблица без разбивки на страницы, но когда я интегрировал свой собственный массивФильтр с плагином AngularJS Smart Table не работает, поэтому элементы фильтруются с использованием ng-show
, поэтому из-за этой проблемы нумерация страниц или другие отфильтрованные значения коллекции не изменяются.
Например: если у меня есть 25 элементов, в которых 20 на первой странице и 5 на следующей странице, тогда, когда я делаю фильтрацию, используя мои собственные элементы фильтра, будут отфильтрованы, но состояние как пагинация, и все не будет работатьбудет по-прежнему оставаться на второй странице, независимо от того, какие элементы были там.
Код для фильтра массива (раскрывающийся список с множественным выбором):
<multiselect-dropdown model="SelectedStatus" options="Options" idprop="Value" displayprop="Value"></multiselect-dropdown>
Myкод для вывода строки
<tr st-select-row="row" st-select-mode="multiple"
ng-repeat="row in display_records" |
ng-show="([row] | filterByArray:Selecteditem:'itemName').length">
Есть ли способ избежать этого ng-show и заставить фильтр работать с самим плагином smart table. У меня есть другие поля текстовых переменных для тех, кто использует обычный st-поиск, который отлично работает.
Обновление (мой код фильтрации массива):
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 в состояние смарт-таблицы или обновить данные смарт-таблицы, когда был выбран фильтр массива.