2012-03-17 65 views
2

我很好奇,如果有一種方法可以將集合模型設置爲父模型。我可能會離開這裏,因爲我剛剛開始使用backbone.js,但繼承了我期待的結構。backbone.js集合和多種類型的模型?

Collection 
    model:object 

對象模型是兩個其他子對象的父模型。

Object 
    ->Image 
    ->text 

這兩個子模型擴展了對象模型。

這是可行的嗎?我希望我在這裏表達清楚。感謝任何可以提供任何幫助的人。

+1

你有一個先看看試過?調用繼承部分我沒有看到任何問題,除了可能會出現很多條件句來區分行爲和渲染。 – fguillen 2012-03-17 16:36:36

+0

可能與[具有特定類型的Backbone.Js集合]有關(http://stackoverflow.com/questions/6061445/backbone-js-collection-with-specific-types)。 – 2012-03-18 22:30:43

回答

4

是的,這是可行的。

我自己並沒有在一個集合中使用不同的子類,但here是一篇相當不錯的關於一般的Backbone繼承以及特別是「超集合中的子類」的文章。

設置繼承本身後,作者使用集合parse函數來創建相應的模型。

Backbone.Collection.extend({ 
    model: Location, 
    parse: function (res) { 
     _.each(res, function (location) { 
      switch(location.phase) { 
       case 'solid': 
        this.add(new Country(location)); 
       case 'liquid': 
        this.add(new Ocean(location)); 
       //... 
      } 
     }, 
     this); 
    } 
}); 

關於你可能也想看看這個question和JohnnyO的答案,可能會幫助你的代碼設計,避免像

this.constructor.__super__.initialize.apply(this, arguments); 
+0

不需要'var self'部分。將'this'作爲最終參數傳遞給_.each以分配上下文。即_each(res,func ...,this); – backdesk 2014-01-06 13:45:11

+0

謝謝。修復 :) – SunnyRed 2014-01-06 14:07:11