From fc1d79a9b072479a559df4b29067ebc388045898 Mon Sep 17 00:00:00 2001 From: davidsulc Date: Wed, 2 May 2012 14:38:43 -0400 Subject: [PATCH] trigger event to load more books when a user scrolls near the end --- assets/javascript/app.library_app.book_list.js | 17 ++++++++++++++++- assets/javascript/app.library_app.js | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/assets/javascript/app.library_app.book_list.js b/assets/javascript/app.library_app.book_list.js index 88dd9f8..3454fce 100644 --- a/assets/javascript/app.library_app.book_list.js +++ b/assets/javascript/app.library_app.book_list.js @@ -11,19 +11,34 @@ MyApp.LibraryApp.BookList = function(){ itemView: BookView, initialize: function(){ - _.bindAll(this, "showMessage"); + _.bindAll(this, "showMessage", "loadMoreBooks"); var self = this; MyApp.vent.on("search:error", function(){ self.showMessage("Error, please retry later :s") }); MyApp.vent.on("search:noSearchTerm", function(){ self.showMessage("Hummmm, can do better :)") }); MyApp.vent.on("search:noResults", function(){ self.showMessage("No books found") }); }, + events: { + 'scroll': 'loadMoreBooks' + }, + appendHtml: function(collectionView, itemView){ collectionView.$(".books").append(itemView.el); }, showMessage: function(message){ this.$('.books').html('

' + message + '

'); + }, + + loadMoreBooks: function(){ + var totalHeight = this.$('> div').height(), + scrollTop = this.$el.scrollTop() + this.$el.height(), + margin = 200; + + // if we are closer than 'margin' to the end of the content, load more books + if (scrollTop + margin >= totalHeight) { + MyApp.vent.trigger("search:more"); + } } }); diff --git a/assets/javascript/app.library_app.js b/assets/javascript/app.library_app.js index ee93249..4f74361 100644 --- a/assets/javascript/app.library_app.js +++ b/assets/javascript/app.library_app.js @@ -19,6 +19,7 @@ MyApp.LibraryApp = function(){ var self = this; _.bindAll(this, "search"); MyApp.vent.on("search:term", function(term){ self.search(term); }); + MyApp.vent.on("search:more", function(){ console.log("Need to load more books!"); }); // the number of books we fetch each time this.maxResults = 40;