我有一个关于在我正在处理的 Marionette 应用程序中使用区域中的视图呈现布局的工作解决方案,但感觉有些不对劲。您必须将任何内容直接附加到 DOM 吗?
这是我在控制器中的方法:
//Grab the main Layout
var layout = new APP.Views.LayoutView();
//Render that layout
layout.render();
//Make the model
var simpleModel = new APP.Models.simpleModel({
"field1" : "foo",
"field2" : "bar"
});
layout.header.show(new APP.Views.subView({model: simpleModel}));
$('body').html(layout.el);
这是我感觉不自然的最后一部分。这主要是因为如果我将 'layout.header.show' 移到 .html() 之后,则它无法正确呈现。如果区域在将其推送到 DOM 后不能动态更改,那么区域的意义何在?
这是我的布局:
APP.Views.LayoutView = Backbone.Marionette.Layout.extend({
template: "#layoutTemplate",
className : 'wrapper',
regions: {
header: "#header",
footer: "#footer"
}
});
这是子视图:
APP.Views.subView = Backbone.Marionette.ItemView.extend({
template : '#headerTemplate',
className: 'container'
});
正如我所说,这可行,但感觉就像我没有正确使用区域。是否有更好、更简洁的方法来执行此操作,允许您在将布局渲染到 DOM 后访问区域?
在Marionette 文档中似乎没有提到使用 .html() 来获取页面上的内容——我想知道这是否因为不需要或被假定而被遗漏了。
任何人都可以帮忙吗?