我有一個如下所示的使用Coffeescript的集合。在backbone.js中修改集合
class ListCollection extends Backbone.Collection model: List localStorage: new Backbone.LocalStorage("TodoList")
我希望能夠動態地改變ListCollection的一個實例的「模式」或「localStorage的」屬性。這可能嗎?
我有一個如下所示的使用Coffeescript的集合。在backbone.js中修改集合
class ListCollection extends Backbone.Collection model: List localStorage: new Backbone.LocalStorage("TodoList")
我希望能夠動態地改變ListCollection的一個實例的「模式」或「localStorage的」屬性。這可能嗎?
這將是相當簡單:
class newClass extends ListCollection
model: somethingElse
我不知道的唯一的事情就是CoffeeScript的類。但通過傳遞選項對象使用var NewModel = SomeModel.extend()
將覆蓋在父級上定義的函數/屬性(基本上它會更改/擴展NewModel
的原型)。
結帳這裏的文檔:http://backbonejs.org/#Model-extend(這與每一個骨幹網的目標工作:模型,視圖,收藏等)
如果您正在尋找創建不同類型的模型(而不是與不同的集合集合具體型號)。這也許會更適合你:
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")
如果對象添加到集合,它會尋找它的類型屬性。然後它會通過一個開關來確定它的類型。這樣一個集合可以有不同類型的模型(以及不同的解析器,驗證,網址等)
您可以修改原型並解決它,或者只是在構造函數中動態檢查 – adrian 2013-02-15 03:21:03