Несмотря на то, что несколько раз читал документы о марионетке, я все еще не в состоянии полностью понять некоторые аспекты этого вопроса.Вид марионетки - почему нужен шаблон
Я создаю макет «AppLayout», как показано ниже:
var AppLayoutView = Marionette.LayoutView.extend({
regions: {
headerRegion: "#ecp_header",
bodyRegion: "#ecp_layout_region"
},
...
HTML-фрагмент для моего приложения испытывает два Dóm узлов для определенных выше областей:
<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();
});
Это дает мне ошибку не можете RENDE r шаблон, так как он является null или undefined.
Я думал, что по умолчанию рендеринга() поведение макета всегда ищет шаблон, так что я выкатил свою собственную версию визуализации, как показано ниже:
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);
});
}
На этот раз, я получаю другую ошибку говоря , «el» #ecp_layout_region должен существовать в DOM. Однако я уверен, что этот элемент существует в DOM, поскольку я вижу его, проверяя окно консоли отладки. Запуск $ ('# ecp_layout_region') показывает действительный элемент.
Внешний вид марионетки довольно запутанный. Вперёд мне нужно несколько вложенных представлений. Я застрял здесь.
У меня нет шаблона для моей точки зрения расположения, так как его область элемента уже присутствовал в DOM. У меня есть шаблоны для суб-представлений внутри вида макета. Я понял, что, хотя я определил 2 существующих узла div в качестве областей моих представлений макета, сам макет должен был быть добавлен в html. Теперь я создал атрибут «el» в своем макете, сопоставляя его с элементом body html. Итак, теперь в макете есть элемент el: body и два региона (заголовок, контент). Теперь это прекрасно. –
Все еще обучение и unlearning марионетка. Итак ... много путаниц :) –