2012-06-12 3 views
1

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

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

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

Почему нет?

ответ

0

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

Line 197 в Example 4: dataView = new Slick.Data.DataView({ inlineFilters: true });

Когда DataView можно инициализировать, флаг inlineFilters вызывает DataView, чтобы «собрать» фильтр, поэтому функция оригинальный фильтр не называется. Используется новая «скомпилированная» функция.

См. Строки 201 и 466 в slick.dataview.js для кода на Собранные фильтры.

0

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

+0

спасибо за ответ, но это не то, что я ищу. Мне нужна точка останова, чтобы остановить функцию, которая фактически решает, что такое совпадение. – Homer

+0

Затем отключите проводку событий 288 и 303. Эти функции переопределяют вашу функцию myFilter. Кроме того, почему вы не можете найти то, что соответствует строкам 288-303? – ganeshk

+0

Не так, эти события только там, чтобы настроить параметры фильтра, которые используются 'myFilter'. Во всяком случае, я нашел проблему. Строка 197: 'dataView = новый Slick.Data.DataView ({inlineFilters: true});' Когда инициализируется dataView, флаг 'inlineFilters' заставляет dataView« компилировать »фильтр, поэтому исходная функция фильтра не называется. Используется новая «скомпилированная» функция. – Homer

2

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

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

+0

'inlineFilters: true' не работает для моего фильтра, но он делает с' inlineFilters: false' какие-либо идеи? Мой код очень похож на пример4 – Blowsie

Смежные вопросы