jQuery widget 和内部回调



这不起作用,但给你一个想法:一个小部件需要使用自己的方法作为callbacK:

$.widget("me.mywidget", {
    _create: function() {
        this.call("mymodule", "myaction", {arg: this.options.value}, _parseData);
    },
    _parseData: function(data) {
        console.log(data);
    },
    call: function(module, action, params, callback) {
        var params = params || {};
        var url = "/" + module + "/"  + action;
        $.post(url, params, function(data) {
            if (data.payload) callback(data.payload);
        });
    },
});

它当前引发异常:Uncaught ReferenceError: _parseData is not defined

这样做的规范方法是什么?

$.post 回调需要使用 .apply.call 调用您自己的callback,这两者都允许您在调用的函数中设置this的范围。

call: function(module, action, params, callback) {
    var params = params || {};
    var url = "/" + module + "/"  + action;
    var self = this;
    $.post(url, params, function(data) {
        if (data.payload) callback.apply(self, [ data.payload ]);
    });
},

或:

call: function(module, action, params, callback) {
    var params = params || {};
    var url = "/" + module + "/"  + action;
    $.post(url, params, function(data) {
        if (data.payload) callbac.call(self, data.payload);
    });
},

您可以阅读此内容以获取有关申请/调用的更多信息。

最新更新