내 현재 코드는 다음과 같습니다 : 나는이 작품을 만들기 위해 내의 OnRender 방법에 여분의 레이아웃이 필요한 이유마리오네트 레이아웃을 올바르게 사용하는 방법은 무엇입니까?
define([
'jquery',
'underscore',
'backbone',
'marionette',
'templates',
'gridView',
'detailView',
'detailModel'
], function ($, _, Backbone, Marionette, JST, GridView, DetailView, DetailModel) {
'use strict';
return Marionette.Layout.extend({
el: '#main',
template: JST['app/scripts/templates/main.ejs'],
initialize: function() {
this.render();
},
onRender: function() {
var Layout = Marionette.Layout.extend({
el: 'div',
template: _.template(""),
regions: {
grid: '#grid',
detail: '#detail'
}
});
this.layout = new Layout();
this.layout.render();
},
showGrid: function() {
var detailModel = new DetailModel();
var g = new GridView(detailModel);
var d = new DetailView(detailModel);
this.layout.grid.show(g);
this.layout.detail.show(d);
}
});
});
는 내가 이해하지 못하는 것은. '#grid'와 '#detail'div의는 main.ejs 템플릿의 일부이지만, 다음은 작동하지 않습니다
return Marionette.Layout.extend({
el: '#main',
template: JST['app/scripts/templates/main.ejs'],
regions: {
grid: '#grid',
detail: '#detail'
},
initialize: function() {
this.render();
},
onRender: function() {
var detailModel = new DetailModel();
var g = new GridView(detailModel);
var d = new DetailView(detailModel);
this.grid.show(g);
this.detail.show(d);
}
});
요소가 이미 지역 객체에 지정된 경우 레이아웃에만 작동 보인다 레이아웃이 생성 될 때 존재합니다. 그러나 문서는 이것이 사실이 아니라고 말합니다.
나는 아마 뭔가 잘못하고 있습니다. 근데 뭐 ?
감사 로저
추가 정보로, Marionette 1.8을 사용하는 경우 이제 [onDomRefresh] (https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#view- DOMrefresh-ondomrefresh-event) 원래 렌더링 된 내용과 새로 렌더링 된 내용이 DOM에 완전히 존재하는지 확인합니다. –