这似乎是一个显而易见的问题,但我不知何故错过了…
如何将选项与backbone.js集合fetch()一起发送?
或者,从更广泛的角度来看:我在服务器上有一个大型数据集,在本例中是messages,我希望通过集合来访问它。考虑到可能有数千条消息,我不想一次简单地获取并存储所有消息,因此我的收集至少必须了解限制和偏移量。更不用说查询经过筛选或排序的列表了。
主干集合是处理这个问题的好方法吗?
干杯
发布于 2011-08-26 04:15:11
我已经和Backbone纠缠了几天了,我必须立即处理这个问题,我看了这个解决方案,但我发现它很笨拙。在阅读了更多的backbone文档之后,我发现实际上可以覆盖fetch()方法中的任何jQuery.ajax选项。举个例子
Posts = Backbone.Collections.extend({
model: Post,
url: '/posts'
});
现在,当你想调用fetch时,只需发送你想要的任何参数。例如:
var posts = new Posts();
posts.fetch({ data: { page: 3, pagesize: 10, sort: 'asc' } });
这将产生以下请求:
http://yourdomain/posts?page=3&pagesize=10&sort=asc
无论如何,我知道你已经接受了答案,但希望这能帮助到一些人。
发布于 2011-05-28 21:37:25
考虑下面的代码,在实例化集合时,传入偏移量、限制或排序的首选项。如果未提供首选项,则初始化采用默认值。然后url函数将这些附加到对服务器的调用中。此后,在处理来自服务器的响应时,您可能需要更新这些值(可能只是偏移量)。
MessageList = Backbone.Collection.extend({
initialize: function(models, options) {
options || (options = {});
this.offset = options.offset || 0;
this.limit = options.limit || MessageList.DEFAULT_LIMIT;
this.sortBy = options.sortBy || MessageList.DEFAULT_SORTBY;
},
url: function() {
return '/messages?' +
'offset=' + encodeURIComponent(this.offset) + '&' +
'limit=' + encodeURIComponent(this.limit) + '&' +
'sort_by=' + encodeURIComponent(this.sortBy);
},
parse: function(response) {
// Parse models
// Parse offset, limit, sort by, etc
}
}, {
DEFAULT_LIMIT: 100,
DEFAULT_SORTBY: 'name_asc'
});
发布于 2011-05-10 21:53:06
您可以将id添加到url,服务器可以使用该id来选择数据发送。例如。
var EventsCollection = Backbone.Collection.extend({
model: Events,
});
var eventCollection = new EventsCollection();
eventsCollection.url = 'foo?offset=10&limit=20';
eventsCollection.fetch();
https://stackoverflow.com/questions/5946057
复制相似问题