List views persist sroll offset by percentage

Fixes #188
This commit is contained in:
lilia 2015-05-28 11:50:31 -07:00
parent d064b16b04
commit 9d688cb761
2 changed files with 25 additions and 2 deletions

View file

@ -45,7 +45,8 @@
});
this.view = new Whisper.MessageListView({
collection: this.model.messageCollection
collection: this.model.messageCollection,
window: this.appWindow.contentWindow
});
this.$('.discussion-container').append(this.view.el);
this.view.render();

View file

@ -24,9 +24,31 @@
Whisper.ListView = Backbone.View.extend({
tagName: 'ul',
itemView: Backbone.View,
initialize: function() {
initialize: function(options) {
this.listenTo(this.collection, 'add', this.addOne);
this.listenTo(this.collection, 'reset', this.addAll);
if (options.window) {
var $window = this.$(options.window);
$window.scroll(this.onScroll.bind(this));
$window.resize(this.onResize.bind(this));
}
},
onResize: function(e) {
this.resizing = true;
clearTimeout(this.resizeTimer);
resizeTimer = setTimeout(function() {
resizing = false;
}, 500);
this.$el.scrollTop(this.scrollPercent * this.$el.height());
},
onScroll: function(e) {
if (!this.resizing) {
this.scrollTop = this.$el.scrollTop();
this.scrollPercent = this.scrollTop / this.$el.height();
}
},
addOne: function(model) {