我尝试使用下面的backbone.js进行嵌套导航是我的代码。多级ul li 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},
]
HTML:
<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但失败。有没有什么好的和简单的方法来做到这一点?
什么是你的问题,或者至少,你的代码出了什么问题?你也应该使用模板,下划线js有一个默认的模板引擎。 – 2013-05-07 11:24:58
你在生成最终的html有问题吗? – 2013-05-07 11:28:24
是的! @Waqar Alamgir我也在我的问题中添加了结果。 – 2013-05-07 11:29:35