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

标签 javascript dojo

有没有办法销毁一个小部件但保留它所附加的 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/

相关文章:

javascript - 2D渲染处理P5

javascript - 并排固定 div - 一个覆盖另一个

javascript - IE8 getPrototypeOf 方法

javascript - 猴子补丁没有开火。 (猜猜这只猴子不会打鸭子。)

javascript - 在 Chrome 扩展中单击元素之前的事件监听器运行函数

javascript - 按作为属性的对象的属性进行过滤

javascript - 为什么我无法填充我的数组对象?

javascript - 如何控制Dojo FilteringSelect默认渲染?

javascript - 如何在 dojo 中获取选中的组合框

javascript - 使用promise同步执行ajax