在Marionette中显示布局。应用程序在控制器内部

时间:2013-06-02 03:37:09

标签: backbone.js marionette

我正在尝试使用我的应用程序中的MVC流构建我的代码。我试图在我的marionette.controller中的marionette app实例中显示创建的布局,如下所示。

  1. 任何人都可以告诉我,在控制器内显示或更改布局的正确方法是否正确?如果没有,那么适当的方法是什么。
  2. 我的控制器

    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
    

    请帮帮我。

    如果您想参考完整代码或贡献,可以找到代码here

    提前致谢。

1 个答案:

答案 0 :(得分:1)

GitHub上的代码似乎只包含空文件(除了库),所以我假设Helper返回一个布局实例(你似乎已经指出了,说它返回了{{ 1}}实例)。

看起来你的布局错误了。使用布局的方法基本上是:

  1. 使用区域(例如)App_LayoutpanelRegion
  2. 创建布局实例
  3. 创建将在布局中显示的视图实例(例如)contentRegionpanelViewInstance
  4. 编写处理程序以在显示布局本身时显示您的视图。
  5. 处理程序应如下所示:

    contentViewInstance

    然后,在您的某个应用区域中显示该布局:

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

    有关布局的文档位于:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.layout.md

    您可以在我的book on Marionette中了解有关使用布局和构建代码的更多信息。