Backbone.js多级ul

时间:2012-02-22 16:10:59

标签: model backbone.js nested html-lists

我正在开始一个骨干项目,我想我会从菜单系统开始。 我的菜单基于多级ul。所以基本上在lis

中有一些嵌套的uls

我想知道如何为此创建模型/集合。就此而言,我将如何看待这个观点。我见过人们创建标签类型为li的视图。但我不确定这是怎么回事。

1 个答案:

答案 0 :(得分:0)

我个人喜欢使用集合视图和项目视图(防止重新呈现整个列表)

AutoFiler.Views.Messages = Backbone.View.extend({
initialize: function () {
    _.bindAll(this, 'render', 'renderItem');
    this.collection.bind("reset", this.render);
    this.collection.bind('add', this.renderItem);
    this.collection.bind('remove', this.render);
},
render: function () {
    this.el.empty();
    this.collection.each(this.renderItem);
    return this;
},
renderItem: function (item) {
    var viewC = new AutoFiler.Views.Message({ model: item });
    this.el.append(viewC.render().el);
}
});
AutoFiler.Views.Message = Backbone.View.extend({
   template: _.template($("#Message-template").html()),
   tagName: "li",
   initialize: function () {
      _.bindAll(this, 'render');
   },
   render: function () {
     $(this.el).html(this.template(this.model.toJSON()));
     return this;
   }
});

<script id="Message-template" type="text/template">
    <div>{{ Subject }}</div>
</script>

<ul id="Messages"> 

</ul>

给你

<ul id="Messages"> 
    <li><div>Subject A</div></li>
    <li><div>Subject B</div></li>
</ul>

您可以通过创建列表集合(集合集合)来嵌套

或者您可以使用类名和深度

进行样式设置

http://jsfiddle.net/3HGuf/

像那样

我认为它使代码更容易阅读