gpt4 book ai didi

javascript - Marionette onAttach 事件

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:46 27 4
gpt4 key购买 nike

Marionette 版本3.2.0

onAttach 生命周期事件未触发

根据doc

The events marked with "*" only fire if/when the region's el is attached to the 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');
}

});

最佳答案

尚不清楚如何实例化 View 并将其附加到页面,但 onAttach 方法仅在将 View “显示”到某个区域时才会触发。因此,如果您手动渲染 View 并将其附加到 DOM,则它不会触发。

下面的代码片段显示了 ViewonAttach 方法将触发的示例:

const App = Mn.Application.extend({
region: '.content',
onStart: function() {
this.showView(new View());
}
});

new App().start();

fiddle :https://jsfiddle.net/wa69p3kj/

请注意,这不一定需要在应用程序区域中显示 - 当显示带有 showChildView 的 View 时,将触发 onAttach 方法。也是如此。

关于javascript - Marionette onAttach 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com