2013-09-15 2 views
0

Если у меня есть данные, которые лучше всего моделируются как n-арное дерево, где каждый узел узла может иметь до n дочерних узлов. В Backbone.js Я испытываю соблазн определить модель под названием Node, которая содержит коллекцию узлов.Избегайте вложенных моделей в Backbone.js

Node = Backbone.Model.extend({ 
    defaults: { 
     children: undefined 
    }, 

    initialize: function() { 
     this.set({ 
       children: new NodeList() 
      }); 
    } 
}); 

NodeList = Backbone.Collection.extend({ 
     model: Node 
}); 

Есть (по крайней мере) две проблем с этим:

  1. Я прочитал, что Backbone.js модель не должна содержать какие-либо атрибутов, которые не являются допустимыми типами JSON и позвоночник. js не является допустимым типом JSON.
  2. Если мне нужен дочерний узел , чтобы поддерживать ссылку на его родительский узел, я получаю циклическое отношение , которое вызывает обращение к Backbone.js при вызове toJSON.

Как решить эту проблему?

Большое спасибо.

+0

Возможно, вы захотите взглянуть на [backbone-relational] (http://backbonerelational.org/) – Jack

+0

Я посмотрю на это, спасибо. Но я обеспокоен тем, что я пытаюсь сделать то, что не должен. Является ли проблема, с которой я столкнулся, лучше решить, не меняя библиотеки? Должен ли я изменить свой подход? – Jack

+1

Я думаю, что ваш подход прекрасен. В дополнение к реляционной структуре позвольте взглянуть на композитный вид марионеток (https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#recursive-by-default). – steveax

ответ

0

Я предлагаю вам взглянуть на Backbone Associations. Я использовал его, и я столкнулся с такой же циклической проблемой преобразования JSON. Я поднял его к Автору, и они исправили его в своем последнем выпуске. Надеюсь это поможет.

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