Marionette에서 재귀를 수행하는 올바른 방법을 고민하는 데 어려움을 겪고 있습니다. 나는 다른 질문에 대한 해답을 보았지만, 이것을 매우 간단한 예제, 즉 http://jsfiddle.net/vZY2v/으로 분해했다. 나는 그 비밀이 합성물의 사용에 있음을 알고 있습니다. 그러나 나는 그것을하는 올바른 방법에 부딪치지 않았습니다.Backbone Marionette 재귀 목록
이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);
원하는 출력은 다음과 같습니다
<body>
<div id='myContainer'></div>
<script type='text/template' id='my-item'>
<%= name %>
</script>
</body>
코드입니다 :
<ul>
<li>Bob</li>
<ul>
<li>Jim</li>
<li>Jane</li>
</ul>
</ul>
html로는 다음과 같습니다
나는 같은 N 수준의 임베디드 목록을 생성 할 아래처럼 :
- 밥
- 짐
- 제인
- 샐리
- 고소
- 존
- 리사
- 고소