【发布时间】:2013-03-27 12:07:09
【问题描述】:
我有一个可行的解决方案,可以在我正在处理的 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 documentation 中似乎没有提到使用 .html() 来获取页面上的内容——我想知道这是因为不需要它还是假设它被遗漏了。
谁能帮忙?
【问题讨论】:
标签: javascript jquery model-view-controller backbone.js marionette