0

scrollのbackbone.jsビューにイベントがあります。ただし、画面をスクロールすると、scrollイベントハンドラーが起動されていないようです。$(windows).scroll()ただし、正常に動作します。scrollこれは、イベントをビューに使用できないことを意味しますか?

見る

PhotoListView = Backbone.View.extend({
    el: '#photo_list',

    events: {
        'scroll': function() {
            console.log('scrolling!');
        }
    },

    initialize: function() {
        this.collection.bind('reset', this.render, this);
    },

    render: function() {
        // ...
        }, this);
        return this;
    }
});

また、$(windows).scroll()スクロールイベントの処理に使用する場合、backbone.jsコードのどの部分に挿入する必要がありますか?以下は私が現在それを置いているところです。

ルーター

var AppRouter = Backbone.Router.extend({
    routes: {
        '': 'explore'
    },

    explore: function() {
        this.photoList = new PhotoCollection();
        var self = this;
        this.photoList.fetch({
            success: function() {
                self.photoListView = new PhotoListView({ collection: self.photoList });
                self.photoListView.render();

                // Check for Scrolling
                $(window).scroll(function() {
                    self.checkScroll();
                });
            }
        });
    },

    checkScroll: function() {
        var contentOffset = $('#photo_list').offset().top;
        var contentHeight = $('#photo_list').height();
        var pageHeight = $(window).height();
        var scrollTop = $(window).scrollTop();
        var triggerPoint = 100;

        if(contentOffset + contentHeight - scrollTop - pageHeight < triggerPoint) {

            this.photoListView.collection.requestNextPage()
                .done(function(data, textStatus, jqXHR) {
            });

        }
    }

});

var app = new AppRouter();
Backbone.history.start();
4

1 に答える 1

1

"#photo_list"要素はその要素にバインドされているため、要素をスクロールするとスクロールハンドラーが起動します。

$(window).scrollウィンドウをスクロールするとき用です。

于 2012-07-06T13:41:00.587 に答える