如何从内部jquery小部件中使用getscript

时间:2014-10-29 19:09:08

标签: jquery jquery-ui jquery-ui-widget-factory

我有一个新的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");
        }
    });

这是一种安全的方法吗?它似乎有效。

2 个答案:

答案 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");
    }
});