我尝试使用下面的backbone.js 进行嵌套导航是我的代码。
json数据:
[
{"id":1,"name":"one","parent_id":0},
{"id":2,"name":"two","parent_id":0},
{"id":3,"name":"three","parent_id":0},
{"id":4,"name":"four","parent_id":0},
{"id":5,"name":"five","parent_id":0},
{"id":6,"name":"one","parent_id":2},
{"id":7,"name":"two","parent_id":2},
{"id":8,"name":"three","parent_id":2},
{"id":9,"name":"four","parent_id":2},
{"id":10,"name":"five","parent_id":2},
]
网页:
<ul>
<li><a href="#">one</a></li>
<li><a href="#">two</a>
<ul>
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
</ul>
</li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
</ul>
和 Backbonejs 代码在这里:
var MenuList = Backbone.View.extend({
tagName: 'ul',
id: 'menu-trial-task',
initialize: function() {
this.collection = new ItemCollection();
this.collection.on('sync', this.render, this);
this.collection.fetch();
},
render: function() {
_.each( this.collection.models, function( item ) {
this.$el.append( new MenuItem({model:item}).render().el );
}, this);
$('nav').html(this.$el);
return this;
}
});
var MenuItem = Backbone.View.extend({
tagName: 'li',
initialize: function() {
this.template = _.template($('#munu_itemt_view').html());
},
render: function() {
this.$el.html( this.template( this.model.toJSON()));
return this;
}
});
var menuList = new MenuList();
结果是:
<ul>
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
</ul>
如您所见,这不是必需的结果。
我也尝试使用 underscore.js 但失败了。有什么好的简单的方法可以做到这一点吗?