博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【D3.js 学习总结】2、D3数据绑定
阅读量:6246 次
发布时间:2019-06-22

本文共 1142 字,大约阅读时间需要 3 分钟。

我们从Hello World示例代码来看D3如何做数据绑定

var demo = d3.select('body')        .selectAll('p')        .data(data, function (d) {          return d;        });

这段代码执行了以下步骤:

1、通过 d3.select('body’) 将页面上的body标签选中;

2、selectAll('p’) 返回了一个p标签的空选集(selection);
3、空选集通过 data() 方法将数据和p标签绑定,并产生三个虚拟的子集: enter, update, exit,其中enter()包含了待绑定数据及相应的p标签的占位符,update()包含了已绑定数据的p标签, exit ()包含了待移除数据p标签,我们通过一张图来形象的理解 enter, update , exit;

enter数据

demo.enter()        .append('p')        .style('width', 0+'px')        .style('background', '#eee')

这段代码为 enter() 中的占位符创建p标签,绑定相应的数据,并初始化样式;

update数据

demo        .text(function (d) {          return d;        })        .transition()        .duration(1000)        .style('width', function (d) {          return d+'px';        })

这段代码为 update() 中的p标签写入数字文本,并绑定transition动画,使它以动画形式展现;

是不是没看到 update() 的影子,没关系,update()会被隐式调用,之所以前面要提到 update 是为了更好的理解这三种状态;

exit数据

demo.exit()        .transition()        .duration(1000)        .style('width', 0+'px')        .remove();

这段代码为 exit() 中的p标签绑定transition动画,使它以动画形式移除;

D3的这种数据绑定方式的设计,使enter()里只是专心处理新增的元素,而update 和 exit分别专注于处理更新和待删除部分,这意味着你不用把所有DOM元素删了重绘,因此得以轻松应对实时变化的数据,甚至支持一些交互(如拖动)与渐变的效果!

转载地址:http://gbmia.baihongyu.com/

你可能感兴趣的文章
深度网络实现手写体识别
查看>>
Python Module_subprocess_调用 Powershell
查看>>
MVC原理图解
查看>>
c基础
查看>>
nodejs 平台的 webscoket 的实现
查看>>
JDK1.8源码(三)——java.util.HashMap
查看>>
给你1000万你可以把生活过的更好吗?
查看>>
<jsp:include page>和<%@ include file%>的区别
查看>>
flash 类和对象的关系
查看>>
保护模式 宏观理解
查看>>
Hat’s Words
查看>>
has_many :through VS has_and_belongs_to_many
查看>>
比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
查看>>
正则表达式介绍及案例分享
查看>>
【BZOJ】2125: 最短路 圆方树(静态仙人掌)
查看>>
【BZOJ】4530: [Bjoi2014]大融合
查看>>
线代之高斯消元
查看>>
java-循环的应用环境以及数组的创建
查看>>
关于java@Override错误
查看>>
scrollTop和scrollLeft的兼容解决万全方法
查看>>