0

require.js およびバックボーン アプリで YouTube プレーヤーの JavaScript API を使用する場合の「これ」について質問があります。youtube iframe_api は、require.js モジュールに読み込まれていますが、これは以下には含まれていません。これが私のコードです。これはすべて、ビューの典型的なバックボーン拡張レイアウトに従っています。

    youTubePlayer: function() {
        var player,
            self = this,
            i = 0;

        self.videoArray = [];

        if ($('.slidevideo').length) {
            _.each($('.slidevideo'), function(el, i) {
                var YTid = $(el).data('videoid');

                self.player = new YT.Player('Player-' + YTid, {
                    videoId: YTid,
                    playerVars: {
                        enablejsapi: 1
                    }
                });

                self.videoArray.push(self.player);
            });
        };

        setTimeout(function(){
            _.each(self.videoArray, function(video) {

                video.addEventListener("onStateChange", self.stateChange)

            });

        }, 5000);
    },
    stateChange: function(e){
        console.log(e);
                    console.log(this);
    }

問題は、stateChange 関数の「this」がバックボーン ビューへの参照を失い、代わりに、YouTube API と YT コンストラクターをロードしたグローバル ウィンドウ オブジェクトを参照することです。Backbone ビュー内で「this」のスコープを維持するにはどうすればよいですか? 事前にどうもありがとうございました。

4

1 に答える 1