2012-12-19 72 views
0

我想了解如何處理我的Backbone模型中的集合實例數量。將會有一個主要模型,該模型由多個集合實例組成。收藏本身是其他一些模型的組合。訪問和維護模型中的固定數組集合

  • 模型A
    • 收集乙
      • 模型C
      • 模型C
    • 收集乙
      • 模型C
      • 模型C
      • 模型C
    • 收集乙
      • 模型C
    • 收集乙
      • might even be empty but will only add more Model C's

這裏是不工作的代碼...

app.js

(function() { 
    var App = {}; 
    window.App = App; 

    var template = function(name) { 
    return Mustache.compile($('#'+name+'-template').html()); 
    }; 

    App.World = Backbone.Model.extend({ 
    initialize: function() { 
     var this.continent = new Array(); 
     this.continent[0] = new App.Continent(0); 
     this.continent[1] = new App.Continent(1); 
     this.continent[2] = new App.Continent(2); 
     this.continent[3] = new App.Continent(3); 
     this.continent[4] = new App.Continent(4); 
     this.continent[5] = new App.Continent(5); 
    } 
    }); 

    App.Continent = Backbone.Collection.extend({ 
    initialize: function(id) { 
     switch (id) { 
     case 0: 
      this.id = "Europe"; 
     case 1: 
      this.id = "Asia"; 
     case 2: 
      this.id = "Africa"; 
     case 3: 
      this.id = "Australia"; 
     case 4: 
      this.id = "South America"; 
     default: 
      this.id = "North America"; 
     } 
    } 
    }); 

    App.Index = Backbone.View.extend({ 
    template: template('index'), 
    initialize: function() { 
     this.world = new App.World(); 
     this.world.on('all', this.render, this); 
    }, 
    render: function() { 
     this.$el.html(this.template(this)); 
     return this; 
    }, 
    bigland: function() { 
     return this.world; 
    }, 
    }); 

    App.Router = Backbone.Router.extend({ 
    initialize: function(options) { 
     this.el = options.el 
    }, 
    routes: { 
     "": "index" 
    }, 
    index: function() { 
     var index = new App.Index(); 
     this.el.empty(); 
     this.el.append(index.render().el); 
    } 
    }); 

    App.boot = function(container) { 
    container = $(container); 
    var router = new App.Router({el: container}) 
    Backbone.history.start(); 
    } 
})() 

的index.html

<!DOCTYPE html> 
<html> 
    <head></head> 
    <body> 
    <h1>Hello world</h1> 
    <div id='app'> 
    Loading... 
    </div> 

    <script type="text/x-mustache-template" id="index-template"> 

     <ul> 
     {{#bigland}} 
     <li>Hello {{.continent}}</li> 
     {{/bigland}} 
     </ul> 

    </script> 

    <script src="jquery.js"></script> 
    <script src="underscore.js"></script> 
    <script src="backbone.js"></script> 
    <script src="mustache.js"></script> 
    <script src="app.js"></script>  
    <script>$(function() { App.boot($('#app')); });</script> 
    </body> 
</html> 

我想從這個演示,得到輸出

  • 你好歐洲
  • 你好亞洲
  • 你好非洲
  • 你好澳大利亞
  • 你好南美
  • 你好北美

問題:

  1. 我如何獲得此代碼使用與多個實例的模型工作集合。
  2. 這個模型有沒有更好的方法構造?我很樂意爲嵌套模型使用主幹插件,但希望看到一些工作代碼。
  3. 下一級實驗是使集合B的某些實例專門化並使用不同的業務規則。關於如何組織這個混亂的任何想法,如何把輔助方法放在哪裏?任何關於邏輯所在的地方的最佳做法,我可以將它放在主模型A中,在B集合中或其他地方?

回答

0

JS斌鏈接:

http://jsbin.com/ejohom/1/edit

我只探索了不同的方式來組織你的模型和收藏。我創建了一個testData結構,它將表示在init時如何加載這些數據。

此外,您還將在集合中看到大陸查找功能。