Backbone.js Marionette.js:区域是否应该替换而不是插入?

Backbone.js Marionette.js:区域是否应该替换而不是插入?,backbone.js,marionette,Backbone.js,Marionette,js的默认行为是将模板附加到区域选择器指定的元素中。然而,我通常不得不创建一个特殊的区域类型,并重写appendHtml函数来替换 这并不太难,但是为什么要将append作为默认值呢 我通常会用一个空div来创建布局模板,以指定区域应该去哪里。然后,在显示该div时,将其替换为子模板 我想我想知道我是否缺少模板的设计模式,使附加更直观 谢谢你的帮助 更新: 所以我通常会看到一些我想呈现到页面中的内容,并希望在我想要的页面上添加n元素。我将使用如下所示的javascript: ReplaceReg

js的默认行为是将模板附加到区域选择器指定的元素中。然而,我通常不得不创建一个特殊的区域类型,并重写appendHtml函数来替换

这并不太难,但是为什么要将append作为默认值呢

我通常会用一个空div来创建布局模板,以指定区域应该去哪里。然后,在显示该div时,将其替换为子模板

我想我想知道我是否缺少模板的设计模式,使附加更直观

谢谢你的帮助

更新:

所以我通常会看到一些我想呈现到页面中的内容,并希望在我想要的页面上添加n元素。我将使用如下所示的javascript:

ReplaceRegion = Marionette.Region.extend({
    open: function(view){
        this.$el.replaceWith(view.el);
    }
});

App = new Backbone.Marionette.Application();
App.addRegions({
  myRegion: {
    selector: "#someRegion",
    regionType: ReplaceRegion
  }
};

var view = new CoolWidgetView(); 

App.myRegion.show(view);
然后在我的html中的某个地方,我将在混合中抛出一个空div,我希望我的模板显示在其中

<div id="mywidget"></div>

现在,如果它是唯一的子元素,我可以使用一个选择器,它将只是父元素,但是当我插入的视图有兄弟元素时,这将变得更加棘手

此外,我并不是真的要求更改默认设置,因为我想知道是否有更好的方法可以在布局中插入您想要的项目。我对这些东西的布局和设计还比较陌生,所以任何东西都有帮助


感谢德里克编写了伟大的软件

木偶区域提供
显示
关闭
方法。在显示新区域之前,您是否尝试关闭该区域


如果需要“替换”且默认行为不起作用,您是否可以展开所需的场景?另外,你能把你最后写的代码也贴出来吗?最后-这可能是一个关于Github问题的更好的问题/讨论:嘿@DerickBailey,你建议在Github页面上也问这个问题吗?虽然我熟悉主干网,但我是一个木偶新手,所以请适当地考虑这一评论。当区域包含一个带有span标记名的ItemView时,我使用了replace,也就是说,我不能为ItemView设置一个containing(region id name)div,否则它会破坏HTML布局。我不完全理解MattyP的场景,但有一个例子是一个带有3部分链接的侧栏。您可能有3个区域,每个区域包含一个CollectionView。如果这些区域用视图的el替换了它们的el,那么您可以这样设置它们的样式:
.sidebar ul{margin bottom:10px}.sidebar ul:last child{margin bottom:0}
。默认情况下,所有的ul都是最后一个孩子。所以很久以前我问过这个问题。我认为这不是一个有用的问题。在花更多的时间与骨干和木偶,我发现这不是一个大问题。