我试图让木偶布局像骨干视图一样呈现。也就是说,我已经声明了一个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在没有模板的情况下渲染这个,而不必在库中命令渲染函数。

有帮助吗?

解决方案

尝试使用

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

其他提示

Layouts需要一个模板,因为它们需要渲染它们内部的区域。如果您没有在布局中使用任何区域,则不需要使用 Layout;使用 ItemView 相反,:

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

然后使用它作为正常与您的区域。

如果你这样做,但是,需要区域内 HeaderBar, ,那么是的,你需要一个模板与 Layout.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top