diff --git a/lib/infiniScroll.js b/lib/infiniScroll.js index f2dac00..f1a00f3 100644 --- a/lib/infiniScroll.js +++ b/lib/infiniScroll.js @@ -21,25 +21,35 @@ error: function(){ }, onFetch: function(){ }, target: $(window), - param: "until", - extraParams: {}, pageSizeParam: "page_size", - untilAttr: "id", pageSize: pageSize, + includePageSize: true, + offsetParam: "offset", + includeOffset: false, + pageParam: "page", + param: "until", + untilAttr: "id", + includeUntil: true, scrollOffset: 100, add: true, strict: false, - includePage: false + includePage: false, + extraParams: {} }); var initialize = function() { $target = $(self.options.target); - fetchOn = true; - page = 1; - + self.reset(); $target.on("scroll", self.watchScroll); + self.collection.on('reset', self.reset); }; + self.reset = function() { + page = 1; + prevScrollY = 0; + self.enableFetch(); + }, + self.destroy = function() { $target.off("scroll", self.watchScroll); }; @@ -100,12 +110,20 @@ function buildQueryParams(model) { var params = { }; - params[self.options.param] = typeof(model[self.options.untilAttr]) === "function" ? model[self.options.untilAttr]() : model.get(self.options.untilAttr); + if (self.options.includeUntil) { + params[self.options.param] = typeof(model[self.options.untilAttr]) === "function" ? model[self.options.untilAttr]() : model.get(self.options.untilAttr); + } - params[self.options.pageSizeParam] = self.options.pageSize + if (self.options.includePageSize) { + params[self.options.pageSizeParam] = self.options.pageSize + } if (self.options.includePage) { - params["page"] = page + 1; + params[self.options.pageParam] = page + 1; + } + + if (self.options.includeOffset) { + params[self.options.offsetParam] = (page + 1) * self.options.pageSize; } return params;