如果您向我们解释您如何组织您的应用程序,我们可能会更好地回答您。
到目前为止,我能说的是最好的策略是一个一个地渲染模型。查看todo 示例代码以更好地理解我在说什么。
我还假设您使用 jquery。
在该示例中,您在主应用程序中拥有一个适用于整个集合 (addAll) 的函数,以及另一个适用于单个模型的函数。
// Add all items in the **Todos** collection at once.
addAll: function() {
MYCOLLECTION.each(this.addOne);
},
addOne: function(todo) {
var view = new TodoView({model: MYMODEL});
this.$("#list").append(view.render().el);
},
在这个框架中,你只需要在单个模型函数的视图中的 view.render() 中进行一些编码,就像这样
el:$('ul .test0'),
render: function() {
if (!_.isNull(this.model.get('parent_id')) ){
if($("." + this.model.get('parent_id')).length == 0) {
//the class doesn't exist because the <ul> hasn't been created yet
//so create the <ul> tag
$('#'+this.model.get('parent_id')).append("<ul class='"+this.model.get('id')+"'></ul>");
}
//now append the <li> element
$('.'+this.model.get('parent_id')).append("<li id='"+this.model.get('id')+"'>"+this.model.get('name')+"</li>");
}
else{
$(this.el).append("<li id='"+this.model.get('id')+"'>"+this.model.get('name')+"</li>");
}
this.$el.html(this.template(this.model.toJSON()));
this.$el.toggleClass('done', this.model.get('done'));
this.input = this.$('.edit');
return this;
},
最后你会有一个这样的列表
<ul class='1'>
<li id='1'>test1</li>
<li id='2'>test2</li>
<ul class='2'>
<li id='3'>test3</li>
<li id='4'>test4</li>
</ul>
</ul>
明白了吗?希望这可以帮助。