0

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

$.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

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

4

1 回答 1

0

$.post 回调需要调用你自己的callback使用.applyor .call,这两者都允许你设置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);
    });
},

您可以阅读此内容以获取有关 apply/call 的更多信息

于 2012-06-01T12:35:01.157 回答