2013-02-15 62 views
1

我有一个如下所示的使用Coffeescript的集合。在backbone.js中修改集合

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

我希望能够动态地改变ListCollection的一个实例的“模式”或“localStorage的”属性。这可能吗?

+0

您可以修改原型并解决它,或者只是在构造函数中动态检查 – adrian 2013-02-15 03:21:03

回答

0

这将是相当简单:

class newClass extends ListCollection 
    model: somethingElse 

我不知道的唯一的事情就是CoffeeScript的类。但通过传递选项对象使用var NewModel = SomeModel.extend()将覆盖在父级上定义的函数/属性(基本上它会更改/扩展NewModel的原型)。

结帐这里的文档:http://backbonejs.org/#Model-extend(这与每一个骨干网的目标工作:模型,视图,收藏等)

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") 

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