在backbone.js中修改集合

在backbone.js中修改集合,backbone.js,Backbone.js,我有一个使用Coffeescript的集合,如下所示 我希望能够动态更改ListCollection实例的model或localStorage属性。这可能吗?这相当简单: class newClass extends ListCollection model: somethingElse 我唯一不确定的是coffeescript类。但是使用var NewModel=SomeModel.extend通过传递一个option对象将覆盖父对象上定义的函数/属性,它将更改/扩展NewModel

我有一个使用Coffeescript的集合,如下所示


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

这相当简单:

class newClass extends ListCollection
    model: somethingElse
我唯一不确定的是coffeescript类。但是使用var NewModel=SomeModel.extend通过传递一个option对象将覆盖父对象上定义的函数/属性,它将更改/扩展NewModel的原型


在此处签出文档:如果您希望创建具有不同类型模型的集合,而不是具有特定模型的不同集合,则此操作适用于每个主干对象:模型、视图、集合等。也许这更适合你:

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

如果向集合中添加对象,它将查找其类型属性。然后它将通过一个开关来确定它的类型。通过这种方式,单个集合可以具有不同类型的模型和不同的解析器、验证、URL等

您可以修改原型并绕过它,或者只是在构造函数中动态检查
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")