Точка останова Slickgrid на фильтре

Глядя на примеры Slickgrid и используя Google Chrome, я устанавливаю точку останова на фильтре, чтобы увидеть, что происходит внутри. Точка останова отлично работает в строке 87 http://mleibman.github.com/SlickGrid/examples/example-header-row.html

но это не работает на линии 143

http://mleibman.github.com/SlickGrid/examples/example4-model.html

Почему бы и нет?

3 ответа

Решение

Скомпилированный фильтр.

Строка 197 в Примере 4: dataView = new Slick.Data.DataView({ inlineFilters: true });

Когда dataView инициализируется, флаг inlineFilters заставляет dataView "компилировать" фильтр, поэтому исходная функция фильтра не вызывается. Новая "скомпилированная" функция используется.

См. Строки 201 и 466 в slick.dataview.js для кода на Complied Filters.

Это происходит потому, что вторым примером является установка inlineFilters вариант DataView истина в конструкторе, а первый нет. Это означает, что во втором примере SlickGrid перекомпилирует вашу функцию фильтра и вставляет ее в цикл, чтобы избежать накладных расходов на вызов функции. Это значительно ускоряет фильтрацию больших наборов данных.

Если вы хотите отладить его, установка точки останова не будет работать. Вам нужно добавить debugger утверждение внутри самой функции фильтра.

Хотя example4 устанавливает myFilter Функционируя в качестве фильтра dataView, фильтрация выполняется посредством проводки событий ползунка и текстового поля - проверьте строки 288 и 303 на то же самое. Точки останова фильтра на них должны работать как положено.

Другие вопросы по тегам