gpt4 book ai didi

javascript - 如何销毁小部件同时保留它所附加的根节点?

转载 作者:行者123 更新时间:2023-12-03 06:49:31 24 4
gpt4 key购买 nike

有没有办法销毁一个小部件但保留它所附加的 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 消失。但我真正想要的是“分离”然后销毁小部件并保留它所附加的原始 div。

有办法吗?

最佳答案

有两种方法可以解决这个问题。首先是使用 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 结构将被保留。引用自源页面:

If true, this method will leave the original DOM structure alone. Note: This will not yet work with _TemplatedMixin widgets

关于javascript - 如何销毁小部件同时保留它所附加的根节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573349/

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