我嘗試使用下面的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