У меня возникают проблемы с правильной настройкой рекурсии в марионетке. Я видел ответы на некоторые другие вопросы, но я разбил это на чрезвычайно простой пример в http://jsfiddle.net/vZY2v/. Я знаю, что секрет заключается в использовании композитов, но я не ударил по правильному пути.Магистральная магистраль Рекурсивный список
Я хочу, чтобы производить N-уровня вложенных списков, таких как:
<ul>
<li>Bob</li>
<ul>
<li>Jim</li>
<li>Jane</li>
</ul>
</ul>
HTML, выглядит следующим образом:
<body>
<div id='myContainer'></div>
<script type='text/template' id='my-item'>
<%= name %>
</script>
</body>
Вот код:
var jsonData = [{
name: 'Bob',
children: [{
name: 'Jim'
}, {
name: 'Jane'
}]
}, {
name: 'Sally',
children: [{
name: 'Sue',
children: [{
name: 'John'
}, {
name: 'Lisa'
}]
}]
}];
var Item = Backbone.Model.extend({});
var ItemCollection = Backbone.Collection.extend({
model: Item
});
var i = new Item();
var Manager = new Marionette.Application();
Manager.addRegions({
mainRegion: "#myContainer"
});
var RecursiveView = Marionette.CompositeView.extend({
tagName: "li",
template: '#my-item',
initialize: function() {
if (this.model.get('children')) {
this.collection = new ItemCollection(this.model.get('children'));
}
}
});
var MotherView = Marionette.CollectionView.extend({
tagName: "ul",
itemView: RecursiveView
});
var myColl = new ItemCollection(jsonData);
var x = new MotherView({
collection: myColl
});
Manager.mainRegion.show(x);
Нужный выход как показано ниже:
- Боб
- Джим
- Джейн
- Салли
- Сью
- Джон
- Лиза
- Сью