首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backbone.js视图使用self实例来呈现子视图。这样可以吗?

Backbone.js视图使用self实例来呈现子视图。这样可以吗?
EN

Stack Overflow用户
提问于 2014-10-24 08:48:37
回答 1查看 319关注 0票数 0

我正在构建一个节点树,其中所有节点都可以有子节点,而那些子节点可以有孙子等等。

我只需使用一个视图就可以将它的模型中列出的任何子视图呈现出来。我现在的情况如下:

代码语言:javascript
复制
define(["backbone", "text!templates/node-tree/node.html"], function(Backbone, NodeTmpl) {

    var NodeView;

    return NodeView = Backbone.View.extend({
        className: "node",
        template: _.template(NodeTmpl),
        initialize: function() {
            this.render();
        },
        render: function() {
            this.$el.html(this.template(this.model.toJSON()));
            if (this.model.get("children")) {
                this.renderChildren();
            }
        },
        renderChildren: function() {
            var container = this.el.querySelector(".child-nodes");
            for (var i = 0; i < this.model.get("children").length; i++) {
                var child = this.model.get("children")[i];
                var view = new NodeView({model: child});
                container.appendChild(view.el);
            }
            return this;
        }
    });

});

这样行吗?我的意思是,我看到了它的工作,但我是否设置了我自己的一些讨厌的惊喜的道路上?另一个选项是拥有两个相同的视图类(NodeA、NodeB),并让它们分别用于呈现子视图。然而,这显然不是很干燥,如果我不需要走那条路,我宁愿不走。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 13:17:11

这样做是很好的。这与Marionette的CompositeView非常相似。木偶的复合的默认行为(如果没有定义itemView/childView属性)是将复合视图本身用作子视图。

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md

我自己也用过这个结构。我有一个分层数据对象,需要将它们呈现为与容器视图相同的子视图(通过一些css调整)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26544481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档