有没有办法销毁小部件但保留它所附加的dom节点?例如,我有一个div
<body>
<div id="app">
</div>
</body>
当我像这样附加小部件时
new someWidget({}, 'app');
通过Id 到达此节点我得到类似
的内容<body>
<div id="app" widgetid="app">
</div>
</body>
然后当我在这个小部件上调用destroy
时var mywidget = registry.byId("app");
mywidget.destroy();
我最终得到了
<body>
</body>
小部件附加到的整个div消失了。但我真正想要的是分离&#39;然后销毁小部件并保留它附加的原始div。
有办法吗?
答案 0 :(得分:1)
有两种方法可以解决这个问题。首先是使用data-dojo-attach-point
并使用domConstruct.place
放置窗口小部件节点。这会将窗口小部件节点附加到目标,从而使窗口小部件成为目标节点的子节点。稍后,当您销毁窗口小部件时,放置窗口小部件的主节点将不会被销毁。
<body>
<div data-dojo-attach-point="app"></div>
</body>
var myWidget= new someWidget();
domConstruct.place(myWidget.domNode, this.app);
其次是使用myWidget.destroy(true)
。请参阅此处的__WidgetBase destroy()文档。传递的参数引用preserveDom
属性,默认为false。确实如此,原始的DOM结构将被保留。从源页面引用:
如果为true,则此方法将仅保留原始DOM结构。注意:这不适用于_TemplatedMixin小部件