我有一个新的jquery UI小部件工厂小部件,在create方法中我想加载一个js文件,然后用它做一些事情。但是,当我调用$ .getScript并引用"这个"在回电中#34;这个"不再是我的插件实例,它现在与加载的脚本有关!我该如何访问插件实例?
CODE:
$.widget("custom.embed", {
options:{
base_url: "",
theme_url: "",
widget_base_url: "",
token: ""
},
_create: function () {
$.getScript("URL", function(){
this.doSomething();
});
},
doSomething: function(){
alert("something");
}
});
谢谢!
修改
$.widget("custom.embed", {
options:{
base_url: "",
theme_url: "",
widget_base_url: "",
token: ""
},
_create: function () {
var widget = this;
$.getScript("URL", function(){
widget.doSomething();
});
},
doSomething: function(){
alert("something");
}
});
这是一种安全的方法吗?它似乎有效。
答案 0 :(得分:2)
您的问题与闭包有关(可变范围取决于函数定义)。我会做类似的事情:
_create: function() {
var self = this;
$.getScript("URL", function() {
self.doSomething();
});
阅读this文章
答案 1 :(得分:0)
怎么样:
var widget = $.widget(
...
_create: function() {
$.getScript("URL", function() {
widget.doSomething();
});
},
doSomething: function() {
alert("something");
}
});