2

XHR を使用してファイルをアップロードする mootools クラスがあります。

var foo = new Class({

    initialize: function() {

        this.bar = 'value';
    },

    upload: function() {

        // This method uploads a file

        ….
        xhr.addEventListener('load', this.uploadComplete, false);
        ….

    },
    uploadComplete: function() {

        // Is getting called on completion of file upload       

        console.log(this.bar); // undefined, but I want to to be 'value'
    }


});

メソッドでアクセスthis.barしたいのですが、パススルーされませんuploadCompletethisxhr.addEventListener('load', this.uploadComplete, false);

どんな助けでも大歓迎です。

4

1 に答える 1

4

使用する必要がありますFunction.prototype.bind- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bindおよびhttp://mootools.net/docs/core/Types/Function#Function :bind - イベントが発生したときに this のコンテキストを正しく設定します。

xhr.addEventListener('load', this.uploadComplete.bind(this), false);

于 2013-10-22T10:23:57.697 に答える