首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >backbone.js集合获取变量

backbone.js集合获取变量
EN

Stack Overflow用户
提问于 2011-05-10 14:27:58
回答 4查看 7.1K关注 0票数 15

这似乎是一个显而易见的问题,但我不知何故错过了…

如何将选项与backbone.js集合fetch()一起发送?

或者,从更广泛的角度来看:我在服务器上有一个大型数据集,在本例中是messages,我希望通过集合来访问它。考虑到可能有数千条消息,我不想一次简单地获取并存储所有消息,因此我的收集至少必须了解限制和偏移量。更不用说查询经过筛选或排序的列表了。

主干集合是处理这个问题的好方法吗?

干杯

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-26 04:15:11

我已经和Backbone纠缠了几天了,我必须立即处理这个问题,我看了这个解决方案,但我发现它很笨拙。在阅读了更多的backbone文档之后,我发现实际上可以覆盖fetch()方法中的任何jQuery.ajax选项。举个例子

代码语言:javascript
复制
Posts = Backbone.Collections.extend({
  model: Post,
  url: '/posts'
});

现在,当你想调用fetch时,只需发送你想要的任何参数。例如:

代码语言:javascript
复制
var posts = new Posts();
posts.fetch({ data: { page: 3, pagesize: 10, sort: 'asc' } });

这将产生以下请求:

代码语言:javascript
复制
http://yourdomain/posts?page=3&pagesize=10&sort=asc

无论如何,我知道你已经接受了答案,但希望这能帮助到一些人。

票数 31
EN

Stack Overflow用户

发布于 2011-05-28 21:37:25

考虑下面的代码,在实例化集合时,传入偏移量、限制或排序的首选项。如果未提供首选项,则初始化采用默认值。然后url函数将这些附加到对服务器的调用中。此后,在处理来自服务器的响应时,您可能需要更新这些值(可能只是偏移量)。

代码语言:javascript
复制
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'

});
票数 6
EN

Stack Overflow用户

发布于 2011-05-10 21:53:06

您可以将id添加到url,服务器可以使用该id来选择数据发送。例如。

代码语言:javascript
复制
    var EventsCollection = Backbone.Collection.extend({

        model: Events,

    });

    var eventCollection = new EventsCollection();
    eventsCollection.url = 'foo?offset=10&limit=20';
    eventsCollection.fetch();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5946057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档