У меня есть страница поиска, результаты которой отображаются в SlickGrid. Это поиск ajax, который выполняет onkeyup
, поэтому можно выполнить поиск, вызвать экземпляр render
экземпляра Slick.Grid и получить еще один результат до завершения первого асинхронного render
. Я хотел бы отменить начальный render
, как только возвращается второй запрос Ajax, чтобы не было одновременно двух render
вызовов.
РЕДАКТИРОВАТЬ С ПРИМЕРОМ :
Вот что я делаю с alert
s для отслеживания порядка выполнения.
function setupGrid() {
slickDataView = new Slick.Data.DataView();
slickGrid = new Slick.Grid(slickGridDiv, slickDataView.rows, slickGridColumns, slickGridOptions);
slickDataView.onRowsChanged.subscribe(function(rows) {
slickGrid.removeRows(rows);
slickGrid.updateRowCount();
slickGrid.render();
});
slickDataView.onRowCountChanged.subscribe(function(args) {
slickGrid.updateRowCount();
slickGrid.render();
});
}
function performSearch() {
jQuery.get('searchPage.php', {MODEL_ID: userInputField.val()},
function(results) {
slickDataView.beginUpdate();
alert(1);
slickDataView.setItems(results);
alert(2);
slickDataView.endUpdate();
}
);
}
setupGrid();
userInputField.keyup(function() { performSearch(); });
В этой последовательности появляются следующие предупреждения, когда я набираю два числа в текстовом поле userInputField
в быстрой последовательности:
1
1
2