Применение фильтра к моему магазину приводит к временному обновлению сетки с неверным набором данных - PullRequest
0 голосов
/ 10 августа 2011

У меня очень простой интерфейс, содержащий сетку, поле поиска, кнопку поиска и хранилище данных из источника данных JSON.

Состояние сетки по умолчанию показывает все данные для данного пользователя, ввод термина в поле поиска и нажатие кнопки поиска применяет фильтр, который затем повторно выполняет вызов, чтобы получить новый набор результатов JSON и поместить эти данные в сетке. Я делаю так следующим образом:

quick_search: function(search_term, store) {                                                                                                                                    
  store.clearFilter(true);                                                                                                                                                      
  store.filter([{property: 'filter', value: search_term}]);                                                                                                                     
}

Следующая функция прекрасно работает при нажатии кнопки поиска, но я вижу этот сценарий:

  • Пользователь начинает с 100 записей в сетке
  • Пользователь искал "test" (имеет 25 записей)
  • Соответствующие 25 записей отображаются в сетке
  • Затем пользователь ищет «стек» (45 результатов)
  • Сетка быстро показывает исходные 100 записей на мгновение, а затем показывает правильные 45 записей

И когда этот последний шаг происходит, это очень быстрый всплеск.

Это правильный шаблон для обновления данных сетки на лету в режиме поиска? Возможно, я неправильно очищаю фильтр?

1 Ответ

1 голос
/ 10 августа 2011

Нашел решение ... Предыдущее решение пыталось запустить загрузку и приводило к нескольким запросам обратно на мой веб-сервер, извлекающим несколько наборов результатов (сначала неверный, затем правильный).

quick_search: function(search_term, store) {
  store.filters.clear();                                                                                                                                    
  store.filter([{property: 'filter', value: search_term}]);                                                                                                                     
}
...