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 コールバックは、orcallbackを使用して独自に呼び出す必要があります。どちらも、呼び出す関数のスコープを設定できます。.apply.callthis

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 に答える