首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Marionette布局上的区域内自动插入和显示视图

在Marionette布局上的区域内自动插入和显示视图
EN

Stack Overflow用户
提问于 2013-06-28 11:10:36
回答 1查看 3.2K关注 0票数 3

我有一个布局,有一个区域。当布局被初始化时,我希望它自动初始化一个预先设置好的视图到它的区域,当布局本身显示/关闭时显示/关闭它。

来自https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.layout.md的当前示例

代码语言:javascript
运行
复制
AppLayout = Backbone.Marionette.Layout.extend({
  template: "#layout-template",    
  regions: {
    mainRegion: "#menu",
    content: "#content"
  }
});

var layout = new AppLayout();
ParentAppLayout.show(layout); // Render the Layout to a parent
layout.mainRegion.show(new SubView());

此示例指示必须首先显示布局,然后才能输入并显示子视图。(上面,如果我在显示SubView本身之前显示layout,那么什么都不会发生,我假设是因为DOM中不存在选择器?)

对于可重用的布局,我希望将这个send视图显示添加到布局本身中,而不是继续在任何使用视图的地方手动添加它。如何才能做到这一点?

代码语言:javascript
运行
复制
AppLayout = Backbone.Marionette.Layout.extend({
  template: "#layout-template",    
  regions: {
    mainRegion: "#menu",
    content: "#content"
  },
  initalize: function() {
     this.mainRegion.attachView(new SubView());  
  },
  onShow: function() {
     this.mainRegion.show(this.mainRegion.currentView);
  }
});

var layout = new AppLayout();
ParentAppLayout.show(layout); // Render the Layout to a parent, expecting the child view to also be created automatically

然而,这种方法也不会做任何事情-没有错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-28 11:20:59

做这个怎么样?

代码语言:javascript
运行
复制
AppLayout = Backbone.Marionette.Layout.extend({
  template: "#layout-template",    
  regions: {
    mainRegion: "#menu",
    content: "#content"
  },
  onShow: function() {
     this.mainRegion.show(new SubView());
  }
});

var layout = new AppLayout();
ParentAppLayout.show();

否则,如果创建SubView很昂贵,您可以在initialize中这样做

代码语言:javascript
运行
复制
initialize: function() {
  this.subView = new SubView();
}

然后在onShow中使用它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17363344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档