0

ビューオブジェクト内のselfメソッドをthis.removeThanksContainerとして参照していますが、これは通常は問題ありませんが、$。post()コールバック内にいる場合、への参照thisはビューではなくグローバルウィンドウオブジェクトになります… 。

    removeThanksContainer : function() {
        var $thanksContainer = $('#js-review-thanks');

        $thanksContainer.is(':visible') && $thanksContainer.remove();
    },

    getProductInfo : function(evt) {
        // local method
        var removeThanksContainer = this.removeThanksContainer;

        $.post(postURL, { product_id : productId }, function(data) {
            if (data) {
                removeThanksContainer();
            }
        }, 'json');
    }

var removeThanksContainer = this.removeThanksContainer;そのため、回避策として、 $。post()内でアクセスできるように、getProductInfo内のローカル変数へのそのメソッドへの参照を保存しています。これはこれを行うための最良の方法ですか、それとも好ましい/より良い方法がありますか?

ありがとう。

4

2 に答える 2

0

いいねへの参照を保持することもできthisます

var that = this;

that.removeThanksContainer();コールバックを呼び出し$.postます。

于 2012-11-29T20:50:17.640 に答える
0

あなたはこのようなものを使うことができます

function myClass()
{
    var self=this;
    ....
    getProductInfo : function(evt) {
        // local method
        var removeThanksContainer = self.removeThanksContainer;
        // or call it directly without any reference you have kept above
        self.removeThanksContainer();
    }
}
于 2012-11-29T20:50:44.180 に答える