查看Slickgrid示例并使用谷歌浏览器,我在过滤器上设置断点,以查看内部发生的情况。断点在第87行http://mleibman.github.com/SlickGrid/examples/example-header-row.html
上正常工作但它不适用于第143行
http://mleibman.github.com/SlickGrid/examples/example4-model.html
为什么不呢?
答案 0 :(得分:2)
这种情况正在发生,因为第二个示例是在构造函数中将inlineFilters
的{{1}}选项设置为true,而第一个不是。这意味着,在第二个示例中,SlickGrid正在重新编译您的过滤器函数并将其内联到循环中以避免函数调用开销。这显着加快了对大型数据集的过滤。
如果要调试它,设置断点将不起作用。您需要在过滤器函数本身中添加DataView
语句。
答案 1 :(得分:0)
即使example4将myFilter
函数设置为dataView过滤器,也可以通过滑块和文本框事件连接完成过滤 - 检查第288行和第303行。这些过滤器断点应该按预期工作。
答案 2 :(得分:0)
编译过滤器。
Example 4中的第197行:dataView = new Slick.Data.DataView({ inlineFilters: true });
当dataView被初始化时,inlineFilters标志会导致dataView"编译"过滤器,因此不调用原始过滤器功能。新的"编译"功能被使用。
有关Complied Filters的代码,请参阅slick.dataview.js中的第201行和第466行。