2012-07-16 58 views
0

有沒有一種方法來爲木偶區域指定模板? 現在我正在使用佈局對象來指定一個模板。backbone.marionette區域和佈局

AppLayout = Backbone.Marionette.Layout.extend({ 

    template: tmpl 

    }); 

    var layout = new AppLayout(); 
    App.main.show(layout); 

    App.addRegions({ 
     userInfo: "#userInfo", 
     mainMenu: "#mainMenu", 
     content: "#content" 
    }); 

    App.mainMenu.show(new mainMenuView.Views.menu()); 
    App.content.show(new dashboard.Views.main());  

爲什麼我無法直接從我的應用程序對象訪問我的區域,當我在佈局對象內定義它們時?

AppLayout = Backbone.Marionette.Layout.extend({ 

    template: tmpl 
    regions: { 
     userInfo: "#userInfo", 
     mainMenu: "#mainMenu", 
     content: "#content" 
     } 
    }); 

    var layout = new AppLayout(); 
    App.main.show(layout); 

    does not work: 
    App.mainMenu.show(new mainMenuView.Views.menu()); 
    App.content.show(new dashboard.Views.main());  

感謝

回答

2

要訪問你把一個地區佈局的區域,你可以寫:

App.main.currentView.mainMenu.show(someView) 
App.main.currentView.content.show(anotherView) 
3

有指定木偶區域模板的方法嗎?

這完全是一個佈局 - 渲染輸出中帶有區域的渲染模板。

爲什麼我無法直接從我的應用程序對象訪問我的區域,當我在layout對象中定義它們時?

佈局中的區域範圍與佈局的el相同,與事件相同。即使您將某個區域定義爲「#id」選擇器,它仍然限定爲佈局,並且在佈局的el之外不會找到任何內容。

此外,在佈局上定義區域會將區域添加到佈局,而不是應用程序對象。如果你想要在應用程序對象上定義的區域,你必須直接將它們添加到應用程序對象。

+0

謝謝,所以你建議通過區域內的佈局來做到這一點嗎?,是我在應用程序級別定義區域的第一個代碼不推薦?,我這樣做是爲了在控制器中輕鬆訪問以更改區域很容易,App.content.show(新視圖); – danikoren 2012-07-16 13:49:18

+1

這取決於你需要什麼。我沒有足夠的背景知道你想要說什麼是正確的。兩者都是有效的用途,並且都是有用的。當您需要在運行時渲染模板時使用佈局,並在運行時將視圖附加到該佈局中的區域。應用程序級別區域通常附加到服務器生成的現有HTML – 2012-07-16 16:15:47

相關問題