2013-07-04 4 views
0

Я знаю, что есть несколько вопросов об этом, и я решил первую проблему через эти ответы. Я решил не менять свое глобальное пространство имен и использовать этот тип решения. Но теперь у меня другая проблема, связанная с теми же структурами. Мои модели начинаются вот так.Создание самосопряженных вложенных моделей с backboneJS + backbone-reational + 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" 
    } 
}) 

Это создаст модели для моего приложения, которое представляет собой 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

Я понял, что мой апи был просто очень странно. У меня был случай с egde, где мой jstree предположил, что он поддерживается Backbone, а не jstree ajax. Потому что мне приходилось смотреть в зависимости от позвоночника, и я хотел, чтобы они работали с друг другу.

Эта модификация была выполнена, но это не было в отношении модели. Это было в моем бэкэнде и обслуживании детей, указывая прямо на узел, что помогает мне правильно построить модель.

Так оно работает, но jstree не имеет поддержки для магистрали

0

Вы должны быть в состоянии сделать это с помощью строкового литерала в качестве соответствующей модели:

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

Это не проблема. Я получаю отношения, но я догадываюсь, проблема в том, что его действительно трудно понять связь всего целого. – vonGohren

+0

Он отлично работает без строкового литерала – vonGohren

Смежные вопросы