Я использую магистраль 1.1 и пытаюсь создать коллекцию с древовидной навигации глубиной 3-5 уровней.Создание дерева базы опорных линий
Упрощенная версия моего кода выглядит так.
var treeItem = Backbone.Model.extend({
defaults : {
'label' : '',
'children' : null
},
initialize : function() {
console.log('model init');
if (_.isArray(this.get('children'))) {
this.set({children : new treeItemCollection(this.get('children'))});
}
},
});
var treeItemCollection = Backbone.Collection.extend({
model: treeItem
});
var myTree = new treeItemCollection([
{ "label" : "first", "id": 1 },
{ "label" : "second", "id": 1, "children":
[
{ "label" : "second.first", "id" : 21 },
{ "label" : "second.second", "id" : 22 },
{ "label" : "second.third", "id" : 22, "children" : [
{ "label" : "third.first", "id" : 31 },
{ "label" : "third.second", "id" : 32 }
] }
]
}
]);
В моем понимании это должно правильно создавать дочерние-коллекции более глубокий уровень (как в моем понимании, инициализация должна вызываться, когда объект строится с тем самым создавая более глубокие уровни правильно).
По какой-то причине это, похоже, не так. Второй уровень (например. myTree.models[0].get('children')
правильно коллекция типа treeCollection, но третий уровень (myTree.models[0].get('children').models[0].get('children')
) просто прямо вверх JSON из объекта параметров.
Для меня это самая странная часть, что второй уровень в порядке , но третий нет. Консоль.log в initialize()
должна проверить, и совершенно верно, она запускается 4 раза, а не 6.
Я пытаюсь понять, почему 3-й уровень не преобразуется в коллекция
Кстати, ваш пример работает для меня по какой-то причине. за исключением того, что у вас есть дублированные идентификаторы в json. Интересно, вызывает ли это проблемы. –