2015-12-10 4 views
0

Как добавить условие пользовательского поиска к смарт-таблице?Использование пользовательского условия на смарт-таблице

Обычно мы устанавливаем поиск столбца, как это:

<input st-search="description" placeholder="Description..." type="search"/> 

Но есть способ, чтобы использовать пользовательскую функцию для поиска? Использование st-set-filter изменит поведение st-search, и это не то, что я хочу.

На данный момент, я добавляю условие при построении таблиц такие строки:

<tr ng-repeat="request in r.displayedRequests" 
    ng-if="r.isInArray(r.developersList, request.developers && (request.status != 'CAN')"> 
    <td>{{request.id}}</td> 
    <td>{{request.description}}</td> 
    <!-- ... --> 
</tr> 

Doing это фильтрует правильные линии, но это делает пагинацию потерпеть неудачу, поскольку displayedRequests не обновляется, как при использовании st-search.

Итак, как я могу добавить условие, используя мои переменные-регуляторы, чтобы фильтровать мои строки таблицы?

(И еще будучи в состоянии фильтровать по глобальной или столбца поиска с использованием st-search на различных текстовых входов)

+0

вы хотите запустить функцию контроллера после того, как пользователь вводит запрос внутри 'input' с м-поиска? – svarog

ответ

0

Выполнение этого фильтрует правильные линии, но это делает пагинация неудачу

вы должны действительно не фильтровать строки в таблице, используя ng-if при использовании ng-repeat. Выражения ng-repeat могут принимать собственные аргументы фильтра и могут принимать ваши собственные настраиваемые фильтры.

ng-repeat="item in vm.items | filter: thoseIDislike" 

это будет также убить пагинацию, так что используйте st-safe-src директиву, чтобы сохранить безопасную копию ваших данных и повтора ею

sample plunker

Но есть способ, чтобы использовать пользовательская функция для поиска?

да, вы можете использовать ng-change на input, когда вы измените значение на вход в модели, функция будет работать (чтобы предотвратить его запуск на каждом ключевом инсультом, я использую ng-model-option «s дребезга собственности)

<input st-search="firstName" 
      placeholder="first name" 
      ng-model="fname" 
      ng-model-options="{ debounce: 1000 }" 
      ng-change="alertMe(fname)"> 

в контроллере:

$scope.alertMe = function(message) { 
    if (message.length>0) { 
    alert(message); 
    } 
} 
+0

Я не думаю, что это то, что я пытаюсь сделать, нет ввода для использования. Я хочу добавить условие, используя функцию и переменную в моем контроллере. Я уже использую 'st-safe-src'. Но не используя 'st-search' не обновляет мой' displayRequest' – Ellone

+0

, тогда используйте фильтры и обработчики кликов, такие как ng-click или ng-change, используя ng-if, если строки таблицы удалят эти строки из DOM, и это уже что ng-repeat делает при фильтрации. в моем ответе 'theIDislike' является условием, он также может быть логическим значением – svarog