2013-02-15 80 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") 

如果對象添加到集合,它會尋找它的類型屬性。然後它會通過一個開關來確定它的類型。這樣一個集合可以有不同類型的模型(以及不同的解析器,驗證,網址等)