Точка останова 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 на то же самое. Точки останова фильтра на них должны работать как положено.