【D3.js 学习总结】2、D3数据绑定

简介: 我们从Hello World示例代码来看D3如何做数据绑定 ``` var demo = d3.select('body') .selectAll('p') .data(data, function (d) { return d; }); ``` 这段代码执行了以下步骤: 1、通过 d3.sele

我们从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元素删了重绘,因此得以轻松应对实时变化的数据,甚至支持一些交互(如拖动)与渐变的效果!

目录
相关文章
|
7天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
14天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
13 1
|
21天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
2月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(6 / 6)
Vue.js学习详细课程系列--共32节(6 / 6)
27 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(5 / 6)
Vue.js学习详细课程系列--共32节(5 / 6)
29 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(4 / 6)
Vue.js学习详细课程系列--共32节(4 / 6)
35 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(3 / 6)
Vue.js学习详细课程系列--共32节(3 / 6)
11 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(2 / 6)
Vue.js学习详细课程系列--共32节(2 / 6)
29 0
|
2月前
|
Web App开发 移动开发 JavaScript
Vue.js学习详细课程系列--共32节(1 / 6)
Vue.js学习详细课程系列--共32节(1 / 6)
42 0