当前位置: 首页 > 知识库问答 >
问题:

javascript - d3.js 绘画节点渲染的完成事件是什么?

万博涛
2023-11-14

动态点击节点展开子节点,然后clonenode()tree ,克隆的节点样式不完整, 可以通过加定时器可以解决这个问题,想请问一下有没有类似于vue 的 nextTick()事件

target.node().cloneNode(true);

image.png

共有1个答案

孙阳舒
2023-11-14

很遗憾,d3.js 没有类似于 Vue 的 nextTick() 事件。在 d3.js 中,对于节点的渲染完成事件,您可以尝试使用 transition().each("end", function() {...}) 来处理,其中 function() 可以是您的渲染完成回调函数。

关于您提到的动态点击节点展开子节点并克隆节点样式不完整的问题,这可能是因为您在克隆节点后立即尝试更新其样式,但此时 DOM 还未完全更新。使用 transition() 可以确保在样式更新之前 DOM 已经完全更新。

例如:

// 假设您的选择集是 selectionselection.transition()    .duration(1000) // 设置过渡持续时间    .each("end", function() {        // 这里是您的渲染完成回调函数        // 更新样式等操作    });

请注意,transition().each("end", function() {...}) 不能保证在样式更新后 DOM 完全更新,因为 D3 的渲染过程是异步的。您可能需要使用其他机制来确保您的样式更新操作在 DOM 完全更新后执行。如果您发现仍然有问题,那可能需要考虑更复杂的解决方案,例如使用其他机制来确保 DOM 完全更新,然后再执行样式更新操作。

 类似资料:
  • 节点类 成员变量 变量 类型 名称 备注 id number 标识 无 name string 名称 无 position Object 位置 结构为 {x:0,y:0,z:0} scale Object 缩放比例 结构为 {x:0,y:0} 分别标识x方向和y方向上的缩放系数 rotation Object 旋转 结构为 {x:0,y:0,z:0} 绕x,y,z轴逆时针旋转 vertexColo

  • 加载页面时 <div id="root"></div> 这样的占位空节点在 js bundle 未生效前表现为白屏。网速差 js bundle 加载慢时,白屏时间增长会造成不好的体验。 节点快照可将 HTML 容器填充为用户上一次访问时对应的内容,极速展示页面内容,提升首屏加载速度。 第一步:在工程配置 build.json 中的 build-plugin-rax-pwa 添加 snapshot

  • Elements(节点)是React apps中最简单的构建块。 一个Elmeent定义了你将在屏幕上看到什幺内容,如: const element = <h1>Hello,world</h1>; 不像浏览器中的DOM节点,React elements其实就是一个普通的对象,你可以很容易的创建它,然后由React DOM来保持element和DOM的更新同步! 注意 一种使人困惑的观念就是

  • 我是 D3 的新手。因此,我正在尝试呈现一个图形,其中两个或多个孩子可以具有相同的父级。我想知道如何使链接再次定向到同一节点?我有断开的链接.. 任何帮助都是巨大的。 这是我的代码...

  • 问题内容: 我想用表调用一些针对div的jQuery函数。该表中填充了。 当我打电话时 我没有结果也 没有帮助。 ng重复填充完成后,有什么方法可以执行功能?我已经阅读了有关使用custom的建议,但是我不知道如何在ng-repeat和div中使用它。 问题答案: 确实,您应该使用指令,并且没有与ng-Repeat循环的结尾相关的事件(因为每个元素都是单独构造的,并且具有自己的事件)。但是a)使用

  • 问题内容: 我在渲染中添加了一个条件,突然它停止显示。这是我正在使用的代码。 我只想显示sdata中的4个项目。有人请帮忙。 问题答案: 您忘记了body中的元素,以及 i > = 5*之后的所有条目所需的元素。 * 这样写: 但我建议您使用而不是仅创建5个元素。 如果要使用,则首先使用 slice 并创建5个元素的子元素,然后在其上使用。 像这样: