2011-11-22 59 views
2

我无法弄清楚从服务器获取模型集合到我的Backbone集合中的正确方法,假设我不想从数据库获取所有模型,而是需要一组模型(由特定模型过滤属性)。如何使用Backbone.js从服务器获取模型集合?

我能想出的唯一方法是重写Fetch并使用函数的“options”参数将过滤器定义传递给我的Backbone.Sync函数。

有没有更好的方法?

回答

1

3最常用的方式设置的集合, 是

  1. 在页面引导模式,并加载它们与Collection.reset();

    // you can print this trough serverside in your view, (you are bootstrapping these models) 
    var bsModels = [{'name': 'name1'},{'name': 'name3'},{'name': 'name2'}]; 
    
    // in your code you can use that bootstrapped data via the reset method. 
    var myModel = Backbone.Model.extend({}); 
    var myCollection = Backbone.Collection.extend({ 
        model: myModel 
    }); 
    myCollection.reset(bsModels); 
    
  2. 您可以使用fetch,但它会加载任何和所有的方法,除非你重写获取方法

  3. 第三种选择是写你的ow ñAjax调用,取模型的正确用量,并使用相同的技术,因为在#1,采用Collection.reset(data);

0

当然,有一个更好的办法!您可以将查询参数传递给您的fetch()调用。所有传递给获取的选项都直接进入$.ajax()。因此,例如:

myCollection.fetch({ 
    data: { 
    search: "boo", 
    limit: "20" 
    } 
} 

因为这变成一个GET请求,这些将被追加到查询字符串,你可以分析他们的服务器上,并返回相应项目的收集。

如果您觉得奇特,可以重新定义fetch()以获取特定类型的集合,以便始终发布适当的查询参数。

相关问题