2

marionette.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>

それが唯一の子要素である場合、親になるだけのセレクターを使用できますが、挿入するビューに兄弟がある場合は、よりトリッキーになります。

また、レイアウトの好きな場所にアイテムを挿入するためのより良い方法があるかどうか疑問に思っているので、デフォルトへの変更を実際に求めているわけではありません。私はまだこれらのもののレイアウトとデザインに比較的慣れていないので、何でも役に立ちます!

素晴らしいソフトウェアを書いてくれてありがとう、デリック!

4

1 に答える 1

0

マリオネット領域は、showcloseメソッドの両方を提供します。新しいリージョンを表示する前にリージョンを閉じてみましたか?

Marionette.Region ドキュメント

于 2013-07-29T03:57:39.463 に答える