1

アプリケーション内で MVC フローを使用してコードを構築しようとしています。以下のように、 marionette.controller 内のマリオネットアプリインスタンスで作成されたレイアウトを表示しようとしています..

  1. コントローラー内でレイアウトを表示または変更するのが適切な方法であるかどうかを教えてください。そうでない場合、そのための適切なアプローチは何ですか。

私のコントローラー

define([ 'marionette', 'app', 'index_view' ], function( Marionette, App, IndexView ) {
console.log("Inside...ViewFlow Controller.");
var ViewFlow_Controller = Marionette.Controller.extend({
    loadIndex : function() {
        console.log("Inside...Load Index Method.");
        App.main.show( new IndexView() );
    }
});
return new ViewFlow_Controller();
});

私のIndexViewはこのようなものです

define(['app', 'helper', 'templates'],
function (App, Helper, templates){
console.log("Inside...Index View.");
App.Page_Index = (function(){
    var Page_Index = {};

    var _pageName = 'IndexPage';        
    var _pageLayout = Helper.newPageLayout({
        name:_pageName,
        panelView:      Helper.newPanelView(),
        headerView:     Helper.newHeaderView({name:_pageName, title:'Welcome to the Index Page'}),
        contentView:    Helper.newContentView({name:_pageName, template: templates.content_index}),
        footerView:     Helper.newFooterView({name:_pageName, title:'IndexPage Footer'})
    });

  return Page_Index;

})();

return App.Page_Index;
});

私のヘルパーは App_Layout インスタンスを返します。しかし、それは機能していません、それは私にエラーを与えています

Uncaught TypeError:object is not a function   viewflow_controller.js:12

私を助けてください。

完全なコードを参照したり、貢献したりしたい場合は、ここでコードを見つけることができます。

前もって感謝します。

4

1 に答える 1

1

GitHubのコードには(ライブラリを除いて)空のファイルしか含まれていないようなのでHelper、レイアウトインスタンスを返すと仮定します(インスタンスを返したと言って、あなたが示したようですApp_Layout)。

レイアウトの使い方が間違っているようです。レイアウトの使用方法は基本的に次のとおりです。

  1. 領域 (例)panelRegioncontentRegion
  2. レイアウトに表示されるビュー インスタンスを作成し (例) panelViewInstancecontentViewInstance
  3. レイアウト自体が表示されているときにビューを表示するハンドラーを作成します。

ハンドラーは次のようになります。

  myLayout.on("show", function(){
      myLayout.panelRegion.show(panelViewInstance);
      myLayout.contentRegionshow(contentViewInstance);
  });

次に、そのレイアウトをアプリの領域の 1 つに表示します。

  MyApp.mainRegion.show(myLayout);

レイアウトに関するドキュメントはこちら: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.layout.md

マリオネットに関する私の本で、レイアウトの使用とコードの構造化について詳しく学ぶことができます。

于 2013-06-02T05:22:00.640 に答える