jQuery小部件和内部回调

时间:2012-05-31 17:48:43

标签: javascript jquery

这不起作用,但给出了一个想法:小部件需要使用自己的方法作为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

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

1 个答案:

答案 0 :(得分:0)

$ .post回调需要使用callback.apply来调用您自己的.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);
    });
},

你可以read this for more information on apply/call