Marionette版本3.2.0
onAttach lifecycle event not fire
根据doc
猫大师解释了为什么?标有“*”的事件仅在区域的el为/时触发 附在DOM上。
Mn.View.extend({
tagName: 'table',
className: 'table',
template: _.template(template),
regions: {
body: {
el: 'tbody',
replaceElement: true
}
},
initialize(options) {
console.log(Mn.isNodeAttached(this.el)); // false
setTimeout(() => console.log(Mn.isNodeAttached(this.el)), 0); // true
},
serializeData() {
return {
foo: 'bar'
}
},
onRender() {
this.showChildView('body', new TableBodyView());
},
onAttach() {
// why onAttach not work ?
console.log('attached');
}
});
答案 0 :(得分:1)
目前尚不清楚如何实例化视图并将其附加到页面,但onAttach
方法仅在“显示”区域视图时触发。因此,如果您手动渲染并将视图附加到DOM,例如,它将不会触发。
下面的代码段显示了View
的{{1}}方法将触发的示例:
onAttach
小提琴:https://jsfiddle.net/wa69p3kj/
请注意,这不一定需要在应用程序的区域中显示 - const App = Mn.Application.extend({
region: '.content',
onStart: function() {
this.showView(new View());
}
});
new App().start();
方法也会在显示showChildView
的视图时触发。