2012-06-12 37 views

回答

0

编译过滤器。

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

当数据视图被initalized,在inlineFilters标志将导致数据视图“编译”过滤器,所以原来的过滤功能不被调用。新的“编译”功能被使用。

请参阅slick.dataview.js中201行和466行,了解Complied Filters上的代码。

0

即使example4myFilter函数作为数据视图过滤器,所述过滤是通过滑块和文本框事件布线完成 - 检查线288和303是相同的。这些过滤器断点应按预期工作。

+0

感谢您的回复,但这不是我要找的。我需要断点停止在实际决定什么是匹配的函数中。 – Homer

+0

然后在288和303禁用事件接线。这些功能覆盖您的myFilter功能。另外,为什么你不能找到288到303行的匹配项? – ganeshk

+0

不是这样,那些事件就在那里设置'myFilter'使用的过滤器参数。无论如何,我发现了这个问题。第197行:'dataView = new Slick.Data.DataView({inlineFilters:true});'当dataView启动时,'inlineFilters'标志会导致dataView“编译”过滤器,所以原始过滤函数不是调用。新的“编译”功能被使用。 – Homer

2

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

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

+0

'inlineFilters:true'对我的过滤器不起作用,但是它对'inlineFilters:false'有任何想法?我的代码与example4非常相似 – Blowsie