2013-07-04 52 views
0

我知道有關於此的多個問題,並且通過這些回答解決了第一個問題。我決定不要警告我的全局命名空間並使用這種類型的解決方案。但是現在我有一個關於相同框架的問題。 我的模特開始是這樣的。使用backboneJS +主幹關係+ requireJS創建自相關嵌套模型

define([ 
'backbone', 
'backbone.relational' 
], function(Backbone){ 

var MenuNode = function() { 
    Backbone.RelationalModel.apply(this,arguments); 
} 

var NodeCollection = function() { 
    Backbone.Collection.apply(this,arguments); 
} 

MenuNode = Backbone.RelationalModel.extend({ 
    constructor: MenuNode, 

    relations:[ 
     { 
      type: Backbone.HasMany, 
      key: "children", 
      relatedModel: MenuNode, 
      collectionType: NodeCollection, 
      reverseRelation: { 
       key: "parent" 
      } 
     } 
    ] 
}) 

NodeCollection = Backbone.Collection.extend({ 
    constructor: NodeCollection, 
    model: MenuNode, 
    url: function() { 
     return "/nodes" 
    } 
}) 

這將爲我的應用程序創建模型nessecary,這是一個jstree。 但我的問題是如何創建與api和我的關係的連接,以及如何使用主幹獲得節點的當前子節點。 我有API:

nodes/   returns the root nodes in a simplified version 
nodes/id   returns the full info about node, with children and parent simplified 
nodes/id/children returns the simplified version of the children of a specific node 

但我怎麼能夠通過骨幹獲取特定節點的電流孩子? 我想在加載孩子時能夠撥打電話,但不能預加載孩子。我試圖保存服務器的請求。因爲有一個大樹視圖,意味着它的unessecary加載整個樹。

只要提出任何問題來澄清更多。 THX提前

回答

0

我想通了,我的API只是很奇怪。我有一個egde案例,我的jstree被認爲是由Backbone支持,而不是jstree ajax本身。因爲我不得不依靠骨幹來觀看,我希望他們能夠與彼此合作。

此修改已完成,但它不在關係模型部分。它是在我的後端,當直接指向一個節點時爲孩子們服務,這有助於我正確地構建模型。

所以它的工作,但jstree不支持骨幹

0

您應該能夠使用字符串來完成這個文本作爲相關模型:

relations:[ 
    { 
     type: Backbone.HasMany, 
     key: "children", 
     relatedModel: 'MenuNode', 
     collectionType: NodeCollection, 
     reverseRelation: { 
      key: "parent" 
     } 
    } 
] 
+0

這不是真的問題。我得到的關係,但我想問題是,它真的很難理解所有的東西的連接 – vonGohren

+0

它工作正常,沒有字符串文字 – vonGohren