У меня есть аналогичная проблема, и я решил, используя подсказки в этом p/32458981">опубликовать.
Документ Smart Table говорит:
stSetFilter
заменяет фильтр, используемый при поиске в Smart Table. Когда поведение по умолчанию для stSearch
не соответствует вашим требованиям, например, при выборе, где одна запись является подстрокой другой, используйте настраиваемый фильтр для достижения ваших целей.
и:
Обратите внимание, что st-safe-src
требуется для правильного отображения всех отдельных элементов в коллекции. Если бы это было опущено, выборка содержала бы только значения из элементов, видимых в таблице, на которые также влияет пейджинг.
Вы можете объявить свой собственный фильтр внутри элемента таблицы в HTML:
<table ... st-set-filter="myCustomFilter" class="table table-striped">
... и вы можете настроить свой фильтр (в своем приложении) с помощью функции предиката. Это может работать следующим образом:
// filter method, creating `myCustomFilter` a globally
// available filter in our module
.filter('myCustomFilter', ['$filter', function($filter) {
// function that's invoked each time Angular runs $digest()
return function(input, predicate) {
searchValue = predicate['$'];
//console.log(searchValue);
var customPredicate = function(value, index, array) {
console.log(value);
// if filter has no value, return true for each element of the input array
if (typeof searchValue === 'undefined') {
return true;
}
var p0 = value['name'].toLowerCase().indexOf(searchValue.toLowerCase());
var p1 = value['nickname'].toLowerCase().indexOf(searchValue.toLowerCase());
if (p0 > -1 || p1 > -1) {
// return true to include the row in filtered resultset
return true;
} else {
// return false to exclude the row from filtered resultset
return false;
}
}
//console.log(customPredicate);
return $filter('filter')(input, customPredicate, false);
}
}])
Я сделал небольшой plnkr, чтобы увидеть фильтр в действии.
person
floatingpurr
schedule
14.09.2015