iScroll を使用してスライドショーを実装するバックボーンビューがあります。
iScrollはonScrollEnd
イベントを発行しますが、ビュー内でそれをバインド/サブスクライブできないようです:
App.Views.Scroller = Backbone.View.extend({
events: {
'onScrollEnd' : 'scrollEnd'
},
initialize: function(){
var self = this;
this.scroller = new iScroll('content-scroller', {
onScrollEnd: function() {
self.trigger('onScrollEnd');
}
});
},
scrollEnd: function(e){
// never called :(
console.log(e);
}
});
OnScrollEndイベントは、ビューの上部要素にバインドされます。 scrollEndは、ビューのHTML要素がonScrollEndイベントを受け取ったときに呼び出されます。
ただし、要素ではなく、ViewオブジェクトでonScrollendイベントをトリガーしています。
そのため、代わりに$(self.el).trigger('onScrollEnd');
を指定するか、関数を直接呼び出してください:self.scrollEnd()
。
明らかではないかもしれませんが、backbone.jsビューのevent
プロパティはDOMイベントにのみ使用されます。カスタムイベントは 上記のジェームスブラウン としてバインドする必要があります。
関数を直接呼び出すか、initでこれを追加する必要があります。
self.bind('onScrollEnd', self.scrollEnd);