#javascript #ember.js #ember-data
#javascript #ember.js #эмбер-данные
Вопрос:
У меня есть поле ввода, которое выполняет поиск в реальном времени. Он настроен так, что при каждом нажатии клавиши он выполняет запрос store.findQuery, который запускает запрос api. При его использовании я заметил, что мне нужно отменять ожидающие ajax вызовы api при выполнении каждого нового findQuery. Поскольку в конечном итоге возникает множество запросов, которые теперь не имеют значения, поскольку поисковый запрос изменился. Кто-нибудь знает, как это сделать?
Ответ №1:
Нет никакого встроенного способа сделать это. Сам вызов ajax не возвращается вам для этого типа использования. Я бы рекомендовал отменить ваши запросы на поиск, чтобы избежать создания тонны бесполезных запросов.
App.IndexController = Em.Controller.extend({
foo:undefined,
callsToSearch: 0,
actualSearch: 0,
watchFoo: function(){
this.incrementProperty('callsToSearch');
//context, method, time that must elapse before calling method
Em.run.debounce(this, this.doSearch, 300);
}.observes('foo'),
doSearch: function(){
this.incrementProperty('actualSearch');
// do the actual search here
}
});
Комментарии:
1. Для этого есть лучший способ использовать Ember.run.debounce, например: gist.github.com/gryzzly/50d6b78dd54bc2468d7a