KinteticJS -销毁节点,无限while循环,因为子节点没有被删除
KinteticJS - destroying nodes, infinite while loop because child doesn't get removed
KinerticJS版本:4.4.3
我有这个问题,当我想从舞台上删除一个层。当我调用Layer.destroy()时,动能运行在一个无法移除的节点上。我没有得到任何错误,但是while循环是无限的,因为循环是基于子元素的长度。
destroy: function (_nameSpace) {
var parent = this.getParent(),
stage = this.getStage(),
dd = Kinetic.DD,
go = Kinetic.Global;
var tempLength
// destroy children
while (this.children && this.children.length > 0) {
this.children[0].destroy();
}
}
在我的例子中,不能被移除的对象是一个Kinetic.Image。当我跟踪节点类型时,它返回一个Shape(这是正确的)。此外,我可以从对象中跟踪所有我想知道的东西…
矩形会被移除。
我在fiddle中创建了一个低级测试,并且一切都工作得很好,所以它必须与我的代码有关。再一次,没有被删除的节点是一个有效的对象,那么为什么没有被删除?
我创建了一个错误信息,这样我就不会每次都崩溃了:
tempLength = this.children.length
this.children[0].destroy();
if (tempLength == this.children.length) {
throw 'item not removed ' + this.children[0].getNodeType();
}
正如你所看到的,我在销毁一个元素后立即检查子元素的长度是否发生了变化,所以我可以假设没有其他代码干扰。例如,在销毁一个节点时添加一个节点。
我这是死路一条。我希望有人能帮助我或给我指个方向。不管怎样,谢谢你的阅读:)
好了,我知道问题出在哪里了。不知何故,我添加了一个相同的动能。图像两次到一个图层。当销毁图层时,它不能删除它的子图层。
我认为这是一个动态错误。我不应该能够这么容易地打破框架。
https://github.com/ericdrowell/KineticJS/issues/434相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- 如何访问React中的子节点
- js初学者-如何在比网页中的DOM节点低一个级别上立即解析所有子节点
- KinteticJS -销毁节点,无限while循环,因为子节点没有被删除