gpt4 book ai didi

javascript - JQueryUI 小部件函数作用域问题

转载 作者:行者123 更新时间:2023-11-28 10:16:27 26 4
gpt4 key购买 nike

我不确定如何描述这个问题,但我正在使用非常有用的 SlickGrid JQuery 插件制作一个 JQueryUI 小部件。 Slickgrid 允许设置用作“过滤器”的函数,以启用在客户端上搜索行。像这样...

_filter: function (item) {
if (this.options.searchString == null)
{ return true; }
if (this.options.searchString.length == 0)
{ return true; }
for (var prop in item) {
if (item[prop] != null) {
if (item[prop].toString().toLowerCase().indexOf(searchString.toLowerCase()) > -1)
{ return true; }
}
}
return false;
}


self.options.dataView.setFilter(self._filter);

我的问题是,一旦调用 _filterthis 就会设置为窗口元素,并且不再保存对小部件的引用,因此我的所有选项都是不可用。我如何知道_filter用户在网格中搜索什么术语?

困难:页面上将出现多个小部件实例,每个实例都有自己单独的过滤器。另外,我不想修改 SlickGrid 的工作方式。

最佳答案

不确定这是否是最好的答案,但这是我想到的:

通过http://www.robertsosinski.com/2009/04/28/binding-scope-in-javascript/的建议,在我的创建函数中,我写了

this._filter = function (item) {

if (this.options.searchString == null)
{ return true; }
if (this.options.searchString.length == 0)
{ return true; }
for (var prop in item) {
if (item[prop] != null) {
if (item[prop].toString().toLowerCase().indexOf(this.options.searchString.toLowerCase()) > -1)
{ return true; }
}
}
return false;
} .bind(this);

将范围绑定(bind)到小部件。

关于javascript - JQueryUI 小部件函数作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com