2013-06-02 1 views
1

내 애플리케이션 내에서 MVC 플로우로 코드를 구조화하려고합니다. 나는컨트롤러 내부의 Marionette.Application에 레이아웃을 표시하십시오.

  1. 사람이 적절한 방법인지가 표시하거나 컨트롤러 내에서 레이아웃을 변경하는 적절한 방법입니다 말해 주시겠습니까 .. 다음과 같이 내 marionette.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; 
}); 

내 도우미처럼

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(); 
}); 

나에게 App_Layout 인스턴스를 반환합니다. 하지만 을 작동하지 않습니다, 그것은 나에게 오류를주는 것은

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

저를 도와주세요.

전체 코드를 참조하거나 기여하려면 here 코드를 찾을 수 있습니다.

미리 감사드립니다.

답변

1

GitHub의 코드에는 빈 파일 (라이브러리는 제외) 만 포함되어있는 것 같습니다. 따라서 Helper은 레이아웃 인스턴스 (App_Layout 인스턴스를 반환 함)를 반환하는 것으로 가정합니다.

레이아웃을 잘못 사용하고있는 것처럼 보입니다. 레이아웃을 사용하는 방법은 기본적으로 :

  1. 레이아웃에 표시됩니다 지역 (예) panelRegioncontentRegion
  2. 만들기보기 인스턴스와 레이아웃 인스턴스를 작성합니다 (예를 들어) panelViewInstancecontentViewInstance
  3. 쓰기 핸들러를 사용하여 레이아웃 자체가 표시 될 때 뷰를 표시합니다.

핸들러는 다음과 같아야합니다

MyApp.mainRegion.show(myLayout); 

레이아웃의 문서가 여기에 있습니다 : : https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.layout.md

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

이 앱의 지역 중 하나에 그 레이아웃을 보여

book on Marionette에서 레이아웃 사용 및 코드 구조에 대해 자세히 배울 수 있습니다.

+0

답장을 보내 주셔서 감사합니다 ... Github 코드에 대해 유감입니다. 내 파일을 커밋했습니다. 제발 ...보세요. 당신이 말한대로 일을했습니다. 이 문제를 해결하도록 도와주세요. – Rachna

+0

사소한 변경으로 해결 된 문제. – Rachna

관련 문제