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

时间:2013-02-01 20:28:52

标签: backbone.js marionette

marionette.js的默认行为是将模板附加到由区域选择器指定的元素中。但是,我通常最终必须创建一个特殊的区域类型并覆盖appendHtml函数来代替替换。

这不是太难,但为什么要追加默认值?

我通常会使用空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>

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

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

感谢Derick编写出色的软件!

1 个答案:

答案 0 :(得分:0)

Marionette区域提供showclose方法。您是否尝试在展示新区域之前关闭该区域?

Marionette.Region docs