1

鉴于这些模板:

<script id="template1" type="layout">
    Template 1 contents
</script>

<script id="template2 type="layout">
   Template 2 contents
   <section class="subview"></section>
</script>

这个视图设置:

var View1 = Backbone.LayoutView.extend({
    template: "#template1"
});

var View2 = Backbone.LayoutView.extend({
    template: "#template2",
    views: {
        ".subview": new View1();
    }
});

我得到这个输出:

Template 2 contents
<section class="subview"><div>Template 1 contents</div></section>

我怎样才能得到这个输出?

Template 2 contents
<section class="subview">Template 1 contents</section>
4

2 回答 2

3

我会在您的模板中使用以下内容,保持模板 1 的模板相同:

<script id="template2 type="layout">
    Template 2 contents
</script>

那么在你看来

var View2 = Backbone.LayoutView.extend({
    template: "#template2",
    beforeRender: function() {
        this.insertView(new View1());
    }
});

var View1 = Backbone.LayoutView.extend({
    template: "#template1",
    tagName: "section",
    className: "subview"
});

这会给你以下

<div>
   Template 2 contents
   <section class="subview">Template 1 contents</section>
</div>

除非通过指定 tagName 属性,否则我没有找到其他删除“div”的方法。

于 2012-12-12T06:56:05.567 回答
0

如果 template1 有以下内容:

<div class="myContents"></div>

那么你可以使用 jQuery 的unwrap ()来删除主干布局管理器afterRender()函数中的元素

afterRender: function() {
    this.getView('.subView').$el.find('.myContents').unwrap();        
},
于 2015-06-02T07:57:49.093 回答