1

もちろん、答えは「アプリを見せたいときに使う」です。わかりました、それは十分に公平です。しかし、サブビューはどうですか?私はテッドの例を使用しています:https ://github.com/t2k/backbone.marionette-RequireJS 。この例では、コントローラーのセットアップは1つだけです。Tedの例でlibraryControllerをコピーした6つのコントローラーがあります。各例には次のコードがあります。

    var _initializeLayout = function() {
       console.log('initialize Start Layout...');
       Controller.layout = new Layout();
       Controller.layout.on("show", function() {
           vent.trigger("startLayout:rendered");
    });
    vent.trigger('app:show', Controller.layout);  <!-- is this needed for each?
};

そのため、各コントローラーにそのコードがあります。StartLayoutには、InspectorControllerとPlayerControllerへのエントリポイントである独自のビューを持つ2つの領域があります。

これらの各コントローラーには次のものがあります。

vent.trigger('app:show', Controller.layout);

したがって、必要以上に「app:show」を呼び出しているように思われます。初期化が必要なコントローラーごとに1回。

これは必要ですか?アプリの直接の子ビューを扱っているときは、おそらくそれを呼び出すことは理解できますが、PlayerControllerに深く関わっていて、アプリビューが表示されない場合は、やり過ぎのように見えます。

ありがとう、

アンドリュー

4

1 に答える 1

3

app:showを「呼び出す」ことを考えないようにしてください。それは機能ではなく、イベントです。イベントには、それをリッスンする任意の数のサブスクリプションを含めることができます。このアプリケーションの場合、そのイベントにはリスナーが1つだけあります。

vent.on('app:show', function(appView) {
  app.content.show(appView);
});

この場合、contentイベントに含まれているビューをとして表示するようにリージョンに指示していappViewます。したがって、リージョンを独自のビューに置き換える場合は、リージョンに表示するビューのパラメーターを使用してcontentトリガーする必要があります。app:showcontent

contentはDOM要素にバインドされており、を呼び出すたびにcontent.show(someView)、そのDOM要素の内容は。によって生成されたものに置き換えられsomeView.render().elます。

レイアウトリージョンイベントを読むことをお勧めします。

お役に立てれば。

于 2013-02-03T20:19:28.657 に答える