筛选器上的光滑网格断点



查看Slickgrid示例并使用Google Chrome,我在过滤器上设置了一个断点以查看内部发生了什么。断点在第 87 行工作正常 http://mleibman.github.com/SlickGrid/examples/example-header-row.html

但它在第 143 行不起作用

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

为什么不呢?

发生这种情况是因为第二个示例在构造函数中将DataViewinlineFilters选项设置为 true,而第一个示例则不是。 这意味着,在第二个示例中,SlickGrid 正在重新编译您的过滤器函数并将其内联到循环中以避免函数调用开销。 这大大加快了对大型数据集的过滤速度。

如果要调试它,设置断点将不起作用。 您需要在过滤器函数本身中添加 debugger 语句。

即使 example4 将 myFilter 函数设置为 dataView 过滤器,过滤也是通过滑块和文本框事件连接完成的 - 检查行 288 和 303 是否相同。这些筛选器断点应按预期工作。

编译过滤器。

示例 4 中的第 197 行:dataView = new Slick.Data.DataView({ inlineFilters: true });

当 dataView 被初始化时,inlineFilters 标志会导致 dataView "编译"筛选器,因此不会调用原始筛选器函数。使用新的"编译"函数。

有关编译过滤器的代码,请参见 slick.dataview 中的第 201 行和第 466 行.js。

最新更新