修改backbone.js中的集合

时间:2013-02-15 02:07:34

标签: backbone.js

我有一个使用Coffeescript看起来像下面的集合。

class ListCollection extends Backbone.Collection
    model: List
    localStorage:
        new Backbone.LocalStorage("TodoList")

我希望能够动态更改ListCollection实例的“model”或“localStorage”属性。这可能吗?

2 个答案:

答案 0 :(得分:0)

这很简单:

class newClass extends ListCollection
    model: somethingElse

我唯一不确定的是coffeescript课程。但是通过传递一个选项对象来使用var NewModel = SomeModel.extend()将覆盖在父对象上定义的函数/属性(基本上它会更改/扩展NewModel的原型)。

在此处查看文档:{​​{3}}(这适用于每个Backbone对象:模型,视图,集合等)

答案 1 :(得分:0)

如果您希望使用不同类型的模型(而不是具有特定模型的不同集合)创建集合。也许这会更适合你:

class ListCollection extends Backbone.Collection
    model: (attrs, options) ->
       switch attrs.type
          when "car"
              new Car(attrs, options)
           else
              new Bus(attrs, options)
    localStorage:
        new Backbone.LocalStorage("TodoList")

如果将一个对象添加到集合中,它将查找它的type属性。然后它将通过一个开关来确定它的类型。这样,单个集合可以具有不同类型的模型(以及不同的解析器,验证,URL等)