让Marionette布局呈现为骨干视图

时间:2014-02-25 10:02:22

标签: javascript backbone.js marionette

我试图让木偶布局像骨干视图一样渲染。即,我已经声明了一个tagName和一个id,我想让它根据它生成一个dom元素。对于这样一个简单的元素,为此只需要创建一个模板存根似乎是多余的。

HTML:

<body><div id="page"></div></body>

测试代码:

var HeaderBar = Backbone.Marionette.Layout.extend({
    tagName: "div",
    id: "headerBar"

});

/*========== APP Tests ============*/
App = Marionette.Application.extend({});

var MyApp = new App();
MyApp.addRegions({
    pageRegion: "#page"
});



var header = new HeaderBar();
MyApp.pageRegion.show(header);

但是,从应用程序调用show会抛出TemplateNotFoundError。

我正在寻找一种方法让Marionette在没有模板的情况下渲染它,而无需在库中使用渲染功能。

2 个答案:

答案 0 :(得分:2)

尝试

var HeaderBar = Backbone.Marionette.Layout.extend({
    template: _.template("<div></div>"),
    id: "headerBar"

});

请参阅https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.renderer.md#using-pre-compiled-templates

答案 1 :(得分:0)

Layout需要模板,因为它们需要在其中呈现区域。如果您没有在布局中使用任何区域,则无需使用Layout;改为使用ItemView

var HeaderBar = Backbone.Marionette.ItemView.extend({
    tagName: "div",
    id: "headerBar"
});

然后像您所在地区一样正常使用它。

但是,如果你需要HeaderBar内的区域,那么是的,你需要一个Layout的模板。