我怎么能得到从服务器使用Backbone.js模型的集合

How can I get a collection of models from the server using Backbone.js?

本文关键字:js Backbone 模型 集合 怎么能 服务器      更新时间:2023-09-26

我无法找出正确的方法从服务器中获取模型集合到我的主干集合,假设我不希望从DB中获得所有模型,而是一组模型(由特定的模型属性过滤)。

我能想到的唯一方法是重写Fetch并使用函数的"options"参数将过滤器定义传递给我的Backbone。同步功能。

有更好的方法吗?

设置集合最常用的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. 你可以使用取回,但它会加载任何和所有的方法,除非你重写取回方法

  3. 第三种选择是编写自己的ajax调用,获取正确数量的模型,并使用与#1相同的技术,使用Collection.reset(data);

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

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

由于这将转换为GET请求,因此这些请求将被附加到查询字符串中,您可以在服务器上解析它们并返回集合的适当项。

如果您喜欢,您可以为特定类型的集合重新定义fetch(),以便它总是发布适当的查询参数。