此代码是 Marionette 的示例:
AppLayout = Backbone.Marionette.Layout.extend(
{
template: "#layout-template",
regions:
{
menu: "#menu",
content: "#content"
}
});
var layout = new AppLayout();
layout.menu.show(new MenuView());
layout.content.show(new MainContentView());
最后两行让我感到困惑。为什么不读:
layout.regions.menu.show(new MenuView());
layout.regions.content.show(new MainContentView());
有人可以解释为什么 layout.menu 有效而 layout.regions.menu 无效吗?
如果我想访问模板怎么办?那不是 layout.template 吗?模板和区域在布局内部的深度相同。
这是木偶代码中的构造函数:
// Ensure the regions are avialable when the `initialize` method
// is called.
constructor: function () {
this._firstRender = true;
this.initializeRegions();
var args = Array.prototype.slice.apply(arguments);
Marionette.ItemView.apply(this, args);
},