1
儘管幾次閱讀木偶文檔,我仍然無法正確理解它的某些方面。木偶佈局視圖 - 爲什麼需要模板
我創建一個佈局圖「AppLayout」如下:
var AppLayoutView = Marionette.LayoutView.extend({
regions: {
headerRegion: "#ecp_header",
bodyRegion: "#ecp_layout_region"
},
...
我的應用程序的HTML代碼段由具有上面定義的區域這兩個DOM節點:
<div id="ecp_header"></div>
<div class="container" id="ecp_layout_region">
<div class="row" id="ecp_body">
...
在應用
。 JS,我的調用代碼是這樣的..
ECPApp.on('start', function() {
require(['controller_cp', 'header_view'], function(ControllerCP, HeaderView) {
console.log("On start event executing...");
// create a event aggregator vent object and attach to app.
ECPApp.vent = new Backbone.Wreqr.EventAggregator();
var appLayoutView = new AppLayoutView();
appLayoutView.render();
//appLayoutView.showLayout();
//$('div.toolbar > ul > li:first > a').tab('show');
if (Backbone.history) Backbone.history.start();
});
這給了我錯誤不能仁德r模板,因爲它是空的或未定義的。
我認爲默認渲染()佈局的行爲總是尋找一個模板,所以我推出我自己的版本呈現,如下:
render: function() {
var $self = this;
/* if no session exists, show welcome page */
var promise = ECPApp.request('entities:session');
promise.done(function(data) {
if (data.result==0) {
console.log('Valid session exists. Showing home page...!');
$self.showHome();
} else {
console.log('No session exists. Showing welcome page...!');
$self.showWelcome();
}
}).fail(function(status) {
console.log('No session exists. Showing welcome page...!');
$self.showWelcome();
});
return $self;
},
showWelcome: function() {
var self = this;
require(['header_view', 'welcome_view'],
function(HeaderView, WelcomeView) {
var headerView = new HeaderView();
var welcomeView = new WelcomeView();
self.bodyRegion.show(welcomeView);
});
}
這一次,我得到另一個錯誤說,DOM中必須存在「el」#ecp_layout_region。但是我確定該元素是存在於DOM中的,因爲我可以通過檢查調試控制檯窗口來看到它。運行$('#ecp_layout_region')會顯示一個有效的元素。
木偶佈局視圖很混亂。展望未來,我需要多個嵌套視圖。我被困在這裏。
我沒有模板我的佈局來看,它的區域元素已經存在於DOM中。我有佈局視圖內的子視圖模板。 我意識到,即使我已經定義了2個現有的div節點作爲我的佈局視圖的區域,佈局視圖本身也需要添加到html中。 我現在在我的佈局中創建了一個「el」屬性,將它映射到html的body元素。所以現在佈局有一個el:body和兩個區域(header,content)。這現在工作正常。 –
仍在學習和解除學習木偶。所以,很多混亂:) –