【问题标题】:Using Collections in Backbone.js在 Backbone.js 中使用集合
【发布时间】:2013-08-21 08:55:11
【问题描述】:

以下将是一个简单的主干应用程序的模型。所以考虑我想要有多个 url 调用,我被告知我应该使用集合(定义是模型的集合)。

模型格式:

    var Books1 = Backbone.Model.extend({
        urlRoot: '/books1'
    });

    var Books2 = Backbone.Model.extend({
        urlRoot: '/books2'
    });

采集格式:

    var Books = Backbone.Collection.extend({
        url: '/books'
    });

我的问题是我怎样才能喜欢在一个集合中组合多个模型?

为了更清楚:

考虑我目前在单个视图中有 8-10 个模型(需要从单个视图调用 8 个以上的服务器请求)。我通过模型成功地做到了这一点。但从我最初的研究中,我得出结论,我应该使用集合,这将是所有使用的模型的集合。因此,通过将集合传递给视图,我将能够根据需要在视图的不同部分调用不同的模型。

我如何在视图中使用它?

为了更清楚:

对于模型,现在我在需要完成请求的地方之前声明模型后使用this.model.save()newmodel.save()

干杯

【问题讨论】:

    标签: backbone.js backbone.js-collections


    【解决方案1】:

    许多属性是通过http://underscorejs.org/#result 处理的,因此您可以将 urlRoot 作为函数传递

    var Books = Backbone.Model.extend({
      urlRoot: function(){
        return condition ? '/books' : '/bum'
      } 
    });
    

    在收藏中相同。但我不这么认为,将 2 个或多个模型组合在一个集合中是个好主意。如果可能的话,只需为另一个模型制作一个新系列......

    视图呢?

    您可以像这样将集合传递给视图实例:

    var SomeView = Backbone.View.extend({
      initialize: function(opt){
        this.collection = new opt.collection
      }
    });
    
    var someView = new SomeView({collection: Books})
    

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 2011-08-23
      • 2012-10-30
      • 2011-11-08
      • 2011-12-19
      • 1970-01-01
      • 2012-06-17
      • 2013-05-27
      • 2011-12-19
      相关资源
      最近更新 更多