Я пытаюсь отобразить список с помощью Marionette CompositeView. Я не уверен, почему в представленном списке есть элемент, отображающий слово result
. Я ожидал, что первый элемент отобразит Level 1
.Магистральный марионетт Композитный вид Rendering Template
Вот скрипку в мой текущий код: http://jsfiddle.net/16L1hen4/
Вот мой JS, шаблон, и данные:
JavaScript:
var App = new Backbone.Marionette.Application();
App.addRegions({
mainRegion: '#main'
});
var TreeModel = Backbone.Model.extend({
});
var TreeCollection = Backbone.Collection.extend({
model: TreeModel,
url: 'https://api.mongolab.com/api/1/databases/backbone-tree/collections/tree?apiKey=somekey'
});
var TreeView = Backbone.Marionette.CompositeView.extend({
initialize: function() {
console.log(this.collection);
},
tagName: 'ul',
template: _.template($('#tree-template').html())
});
var treeCollection = new TreeCollection();
treeCollection.fetch().done(function() {
var treeView = new TreeView({collection: treeCollection});
App.mainRegion.show(treeView);
});
Шаблон:
<div id="main"></div>
<script type="text/template" id="tree-template">
<li><%- name %></li>
</script>
JSON Данные:
{
"_id": {
"$oid": "54adab80e4b0aa674b256836"
},
"name": "Level 1",
"children": [
{
"name": "Child 1 - Level 2",
"children": [
{
"name": "Jon - Level 3"
},
{
"name": "Mary - Level 3"
}
]
},
{
"name": "Child 2 - Level 2",
"children": [
{
"name": "Bill - Level 3"
}
]
}
]
}
Compositeview принимает коллекцию Backbone моделей для визуализации, а не одной модели. Для того, чтобы вложить модели, вы также можете использовать коллекцию в составе viewview. – Trace
@KimGysen Спасибо. Я редактировал вопрос и код, чтобы использовать «Backbone.Collection» вместо «Backbone.Model». Я все еще понимаю, почему первый элемент отображает слово «результат». – Mdd
Это небольшое изменение и не связано с фактическим вопросом, но вы можете напрямую ссылаться на шаблон с шаблоном 'template:" # tree-template "' вместо метода подчеркивания; Marionette автоматически найдет шаблон для вас, используя знак подчеркивания, если это строковая ссылка на объект DOM. – mix3d