我有一个使用Coffeescript看起来像下面的集合。
class ListCollection extends Backbone.Collection model: List localStorage: new Backbone.LocalStorage("TodoList")
我希望能够动态更改ListCollection实例的“model”或“localStorage”属性。这可能吗?
答案 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等)