2013-08-21 90 views
2

我現在有一個困惑的狀態,任何一個明確我的疑問,並給予更多的細節http://backbonerelational.org/請?爲什麼/當我應該使用骨幹關係框架

基本上,

  1. 爲什麼我們使用關係

  2. 當我們需要使用該

  3. 我們不能達到與Backone.js本身相同的決定..?

我有這樣的情況,我有樣JSON是這樣的:

var navi = { 
    "mainLinkLabel": "Home", 
    "mainLinkHref": "/home.html", 
    "sublinks": [ 
     { 
      "sublinkLabel": "subHome1", 
      "sublinkHref": "/home/home1.html" 
     }, 
     { 
      "sublinkLabel": "subHome2", 
      "sublinkHref": "/home/home2.html" 
     }, 
     { 
      "sublinkLabel": "subHome3", 
      "sublinkHref": "/home/home3.html" 
     } 
    ] 
} 

它的mainlink和子鏈路:此

我應該做的模型,想覆蓋這兩個信息:

var bothModels = Backbone.Model.extend({ 

    defautls:{ 

     "mainLinkLable" : "default Lable", 
     "mainLinkHref" : "#", 
     "sublinks"  : [ 
      "sublinkLabel" : "default sublink", 
      "sublinkHref" : "#" 
     ] 

    } 

}) 

或我需要爲每個和每個連接與骨幹關係.. lik這是嗎?

var mainModel = Backbone.Model.extend({ 
    defautls:{ 

     "mainLinkLable" : "default Lable", 
     "mainLinkHref" : "#" 

    } 
}) 

var subModel = Backbone.Model.extend({ 
    defaults:{ 
      "sublinkLabel" : "default sublink", 
      "sublinkHref" : "#" 
    } 
}) 

如果是這樣,我怎麼可以連接這兩個模型..什麼是我會得到的好處。我在互聯網上搜索,找到一些簡單的教程來理解這一點..但我不能與一些..

任何人澄清我這個場景請.. ..?

Here is the fiddle to play

+0

您正在採取正確的方法。創建2個獨立的模型。而第一個模型將有一個屬性,將再次成爲一個集合子模型。通過這樣做,您可以將子鏈接作爲模型中的嵌套集合。這將允許所有相關數據在單個模型上,而不是在模型 –

+0

以外的單獨集合聽起來不錯。你能告訴我還是更新小提琴的現場演示..並沒有工作的骨幹關係在這裏..? – 3gwebtrain

回答

2

我還沒有和骨幹關係工作過。但我會構造這個結構,使用兩個模型並在模型上有一個parse方法並傳遞主要集合。

var navi = { 
    "mainLinkLabel": "Home", 
    "mainLinkHref": "/home.html", 
    "sublinks": [{ 
     "sublinkLabel": "subHome1", 
     "sublinkHref": "/home/home1.html" 
    }, { 
     "sublinkLabel": "subHome2", 
     "sublinkHref": "/home/home2.html" 
    }, { 
     "sublinkLabel": "subHome3", 
     "sublinkHref": "/home/home3.html" 
    }] 
}; 


var MainModel = Backbone.Model.extend({ 
    defauts: { 
     "mainLinkLable": "default Lable", 
     "mainLinkHref": "#" 
    }, 
    parse: function(response) { 
     if(response.sublinks) { 
      this.subCollection = new SubCollection(response.sublinks || null, { parse: true }); 
     } 
     delete response.sublinks; 

     return response; 
    } 
}) 

var SubModel = Backbone.Model.extend({ 
    defaults: { 
     "sublinkLabel": "default sublink", 
     "sublinkHref": "#" 
    } 
}); 

var MainCollection = Backbone.Collection.extend({ 
    model: MainModel 
}); 

var SubCollection = Backbone.Collection.extend({ 
    model: SubModel 
}); 

var mainCollection = new MainCollection(navi, {parse : true}); 

console.log(mainCollection); 

jsFiddle

所以,如果你想訪問的每個模型內部的子鏈路集合。你只會使用

this.subCollection這會給你的收藏有問題。

+0

舒沙,謝謝你的倡議,你還能看看alexanderb的答案嗎..? – 3gwebtrain

1

Backbone.js不支持框中的嵌套模型。在現實中,你處理嵌套模型很多:發票包含行,部門包含員工等

你應該看看你bussine模型,如果你有嵌套模型如上,Backbone.Relational將幫助你。

您基本上無法將其歸檔爲Backbone.js本身,希望編寫自己的自定義代碼,以超載parse模型的方法。我們在我工作的一個項目上做過,但主要經驗教訓 - 使用時間預測插件而不是自己的車輪改造。而Backbone.Relational似乎是一個不錯的選擇。

+0

好的,但在我的情況下,如何使用Backbone.relational ..你可以給一個線索..請 – 3gwebtrain

+0

檢查出的例子是好開始:http://backbonerelational.org/#examples –

相關問題