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」のスコープを維持するにはどうすればよいですか? 事前にどうもありがとうございました。