提问者:小点点

在区域内附加另一个视图-木偶


我使用主干布局管理器在应用程序中管理我的视图。我想试试木偶。我遇到了一个无法将视图附加到区域的问题。

<body>
  <div id="content">
       <header id="header"></header>
       <div id="wrapper">
               <span>Some View Content</span>
       </div>
       <footer id="footer"></footer>
  </div>
</body>  
MyApp = new Backbone.Marionette.Application();
var rm = new Marionette.RegionManager();

var regions = rm.addRegions({
    mainRegion : '#content',
    headerRegion : '#header',
    wrapperRegion : '#wrapper',
    footerRegion : '#footer'
});

regions.headerRegion.show(new HeaderView());
regions.wrapperRegion.show(new SomeView());
regions.footerRegion.show(new FooterView());

如果我想在wrapperRegion中附加另一个视图,怎么做?

我还想知道是否有办法将另一个视图插入到现有视图中?布局管理器允许我写下面提到的代码。。我怎样才能在木偶中实现这样的效果?

var MyView = Backbone.View.extend({

  tagName: "div",

  beforeRender: function() {
     this.insertView(new ItemView());
  }
});

共3个答案

匿名用户

每个区域一个视图。只需定义另一个区域来放入您的另一个视图。

匿名用户

您可以简单地使包装区域成为木偶。布局你可以在木偶上找到文档。布局视图

基本上,布局是项目视图的扩展,可以递归地在其中包含其他区域。这意味着您可以在一个布局中渲染多个视图,而布局本身可以在另一个区域中渲染。

匿名用户

要追加视图,您需要布局视图

布局视图具有区域管理器

但首先,您需要添加一个由区域管理器控制的元素,如

var AppLayoutView = Backbone.Marionette.LayoutView.extend({
  template: "#layout-view-template",

  regions: { 
  }
  appendView: function ( incremennt, newView ){
     this.$el.append( '<div id="view'+increment+'" >' ) ;
     this.regionManager.addRegion( 'view'+increment , '#view'+increment )
     this['view'+increment].show ( newView ) ;
  }
});

为新视图创建新id将其添加到布局中

然后区域管理器将其添加为区域

你在那里展示你的观点