我写了一个像这样的jQuery UI小部件:
$.widget("ns.wid", {
options: {
attr1: "something1",
attr2: {
"sub_attr": this.__renderList,
"css": {
"opacity": '0.58'
},
},
},
__renderList: function() {
console.log("I should be invoked through attr2.sub_attr!");
}
});
现在它不起作用,因为this
内的attr2
没有引用窗口小部件实例,而是引用Window
。如何在不直接命名的情况下引用窗口小部件实例?感谢。
答案 0 :(得分:0)
在你的对象的构造函数中将函数绑定到它的上下文lke this:this._renderList = this._renderList.bind(this)
或者只是: " Sub_att&#34 ;: this._renderList.bind(this)
答案 1 :(得分:0)
我不确定非普通对象是否可以正常使用jQuery的小部件,但是。你可以试试这个。
var widgetData = (new class {
get options() {
return {
attr1: "something1",
attr2: {
"sub_attr": this.__renderList,
"css": {
"opacity": '0.58'
},
},
};
}
__renderList() {
console.log("I should be invoked through attr2.sub_attr!");
}
});
widgetData.options.attr2.sub_attr();