Если у меня есть данные, которые лучше всего моделируются как 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
});
Есть (по крайней мере) две проблем с этим:
- Я прочитал, что Backbone.js модель не должна содержать какие-либо атрибутов, которые не являются допустимыми типами JSON и позвоночник. js не является допустимым типом JSON.
- Если мне нужен дочерний узел , чтобы поддерживать ссылку на его родительский узел, я получаю циклическое отношение , которое вызывает обращение к Backbone.js при вызове toJSON.
Как решить эту проблему?
Большое спасибо.
Возможно, вы захотите взглянуть на [backbone-relational] (http://backbonerelational.org/) – Jack
Я посмотрю на это, спасибо. Но я обеспокоен тем, что я пытаюсь сделать то, что не должен. Является ли проблема, с которой я столкнулся, лучше решить, не меняя библиотеки? Должен ли я изменить свой подход? – Jack
Я думаю, что ваш подход прекрасен. В дополнение к реляционной структуре позвольте взглянуть на композитный вид марионеток (https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#recursive-by-default). – steveax