2

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 编写了出色的软件!

4

1 回答 1

0

Marionette 区域同时提供了 ashow和 aclose方法。您是否尝试在显示新区域之前关闭该区域?

Marionette.Region 文档

于 2013-07-29T03:57:39.463 回答