Backbone.js 多级ul

发布于 2025-01-08 01:56:20 字数 141 浏览 1 评论 0原文

我正在开始一个骨干项目,我想我应该从菜单系统开始。 我的菜单基于多级 ul。所以基本上在一些 li 的侧面有嵌套的 ul,

我想知道如何为此创建一个模型/集合。就此而言,我将如何进行视图。我见过人们使用 li 标签类型创建视图。但我不确定这会如何运作。

I'm beginning a backbone project and I figured I'd start with the menu system.
My menu is based on a multi level ul. So basically there are nested uls in side some of the lis

I'm wondering how I would create a model/collection for that. And for that matter how I would do the view. I've seen people creating views with a tag type of li. But I'm not sure how that would work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弱骨蛰伏 2025-01-15 01:56:20

我个人很喜欢使用集合视图和项目视图(防止重新渲染整个列表),

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/

像这样的

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

I am personally a fan of using the collection view and an item view (prevents rerendering the whole list)

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>

gives you

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

which you could you could nest by creating a collection of lists (collections of collections)

or you can just style using a class name and depth

http://jsfiddle.net/3HGuf/

like that

I think it makes the code a little easier to read

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文