使用Backbone Collection一次获取多页数据
Get Multiple pages of data at once with Backbone Collection
我有这个Collection mixin,我正在使用它来尝试继续将多页数据一起拉入集合,但我认为当它检测到传入fetch的新选项时,它会重置自己,因为我只会得到最后一页数据。
var Pageable = {
fetch: function(options) {
var originalSuccess = options.success;
options.data.page = 1;
var doFetch = function(options) {
var beforeLength = this.length;
options.data = _.extend({page: options.data.page, per_page:100}, options.data);
options.success = function(col, res, opts) {
if (this.length === beforeLength) return originalSuccess(col, res, opts);
options.data.page++;
doFetch(options);
}.bind(this);
return Collection.prototype.fetch.call(this, options);
}.bind(this);
return doFetch(options);
}
};
我想你从中了解了我要做的事情的要点,有什么想法可以做吗?
想清楚了,你需要添加选项来告诉集合不要删除,而只添加/更新。。。
var Pageable = {
fetch: function(options) {
var originalSuccess = options.success;
_.extend(options, {
add: true, // <----
remove: false, // <----
update: true, // <----
data: {
page: 1,
per_page:100
}
});
var doFetch = function(options) {
var beforeLength = this.length;
options.success = function(col, res, opts) {
console.log(this.length, beforeLength);
if (this.length === beforeLength) return originalSuccess(col, res, opts);
options.data.page++;
doFetch(options);
}.bind(this);
return Collection.prototype.fetch.call(this, options);
}.bind(this);
return doFetch(options);
}
};
相关文章:
- Jquery选择选项并获取只工作一次的更改值(页面加载时)
- emberjs一次获取所有表单字段/值
- 循环遍历数组并仅获取一次相同的值
- 如何一次获取一个p元素的内容
- Ajax 使用函数每秒获取一次 php 数据
- 字符串拆分并获取第一次和最后一次出现
- 获取 window.location.reload 以在 Ionic 中仅加载一次
- 如何在一次调用中使用jquery从外部文件中获取多个剑道ui模板
- 如何在一次点击中获取所有选定的选项值ID
- 如何获取单击元素的类值,并使用此值在 jquery 中最后一次出现此类之后放置一段 html 代码
- 如何在最后一次出现某个字符后获取 url 中的参数
- 如何使用 Jquery 获取 XML 文件,并在每次加载时以随机顺序显示元素一次
- 在 JavaScript 中从一次点击事件到其他事件获取价值
- 如何在Javascript中一次获取多个按钮的文本
- 在滚动时没有获取新数据,而是在滚动时一次又一次地添加相同的 json 数据
- 如何通过一次调用 Facebook Graph API 来获取多个相册图片 URL
- 如何一次获取一页的数据
- 如何在HTML5网页中本地保存数据,这样我们就不需要一次又一次地从服务器获取
- 在Angular 2中,使用observable获取一次数据
- 从2个可观测对象中获取一次数据