2012-05-16 4 views
0

위키와 예제를 읽은 후에도 여전히 혼란 스러워요.하지만 레이아웃과 영역 등을 사용할 때가 있습니다.하지만 문제는 표시되지 않습니다. 페이지는 전혀 렌더링되지 않습니다. html에는 실제로 메뉴와 내용 만 있어야하며 내용은보기를 기반으로 변경할 수 있습니다. (나는 메뉴를 같은 방식으로했기 때문에 그것을 교환 할 수도있다). 나는이 예를 들어, 하나의 파일에 JS를 응축 한뷰 렌더링 안함, 영역 대 레이아웃

<!-- DefaultLayout --> 
<script type="text/template" id="template-default"> 
    <div id="region-navbar"> 
    region-navbar 
    </div> 
    <div id="region-content"> 
     region-content 
    </div> 
</script> 

<!-- NavBar --> 
<script type="text/template" id="template-navbar"> 
    <div id="navbar"> 
     my freakin navbar 
    </div> 
</script> 

<!-- ViewOne --> 
<script type="text/template" id="template-view1"> 
    <div id="view1"> 
     my freakin view 
    </div> 
</script> 

<!-- RegionContainer --> 
<div id="default-layout-container"> 
</div> 

, app.coffee :

window.App = { } 

# Region 
class RegionContainer extends Backbone.Marionette.Region 
    el: '#default-layout-container' 
    # Called on the region when the view has been rendered 
    onShow: (view) -> 
    console.log 'onShow RegionContainer' 

App.RegionContainer = RegionContainer 

# Layout 
class DefaultLayout extends Backbone.Marionette.Layout 
    template: '#template-default' 
    regions: 
    navbarRegion: '#region-navbar' 
    contentRegion: '#region-content' 

App.DefaultLayout = DefaultLayout 

# NavBar (View) 
class NavBar extends Backbone.View 
    el: '#template-navbar'  
    initialize:() -> 
    console.log 'init App.NavBar' 

App.NavBar = NavBar 

# A View 
class ViewOne extends Backbone.View 
    el: '#template-view1' 
    initialize:() -> 
    console.log 'init App.ViewOne' 

App.ViewOne = ViewOne 

# App 
$ -> 

    # Create application, allow for global access 
    MyApp = new Backbone.Marionette.Application() 
    App.MyApp = MyApp 

    # On application init... 
    MyApp.addInitializer (data) -> 
    console.log 'init App.MyApp' 

    # RegionContainer 
    regionContainer = new App.RegionContainer 

    # Layout (holds Views) 
    defaultLayout = new App.DefaultLayout 
    regionContainer.show defaultLayout 

    # Views 
    navBarView = new App.NavBar 
    navBarView.render() 

    viewOne = new App.ViewOne 
    viewOne.render() 

    defaultLayout.navbarRegion.show navBarView 
    defaultLayout.contentRegion.show viewOne 

    data = 
    that: 'this' 

    MyApp.start data 

을 console.log 보여줍니다

나는 html 파일이 있습니다

onShow RegionContainer app.js:19 
init App.NavBar app.js:44 
init App.ViewOne 
init App.MyApp 

나는 수 백만 번 문서/예제를 읽었지만 이 모든 것들의 곡면 곡선이 합성됩니다. 도와주세요!

답변

3

  • ViewOneNavBarBackbone.View을 연장하지 말아야하지만 Backbone.Marionette.ItemView

  • 당신이 elViewOneNavBar에 대한 템플릿을 정의하지 말아야 당신은 몇 가지 일을 혼동하고 있지만 거의 다 있습니다 특성을 나타내지 만 이름에서 알 수 있듯이 template 특성에 있습니다.

+0

유레카! 감사. –

+1

추가적으로, navBarView.render() 및 viewOne.render()를 명시 적으로 호출 할 필요가 없습니다. –