zoukankan      html  css  js  c++  java
  • 【 D3.js 入门系列 --- 7 】 理解 update, enter, exit 的使用

       在前面几节中反复出现了如下代码:

    [javascript] view plain copy
     
    1. svg.selectAll("rect")    
    2.           .data(dataset)    
    3.           .enter()    
    4.           .append("rect")   

        当所选择的 rect 数量比绑定的数据 dataset 的数量少的时候,通常会用到以上代码,这一节就详细说说当被选择元素和数据数量不一致时该如何处理。

        这一节将涉及到三个函数。

    1. update()    当对应的元素正好满足时 ( 绑定数据数量 = 对应元素 )

        实际上并不存在这样一个函数,只是为了要与之后的 enter 和 exit 一起说明才想象有这样一个函数。但对应元素正好满足时,直接操作即可,后面直接跟 text ,style 等操作即可。

    2. enter()    当对应的元素不足时 ( 绑定数据数量 > 对应元素 )

        当对应的元素不足时,通常要添加元素,使之与绑定数据的数量相等。后面通常先跟 append 操作。

    3. exit()     当对应的元素过多时 ( 绑定数据数量 < 对应元素 )

        当对应的元素过多时,通常要删除元素,使之与绑定数据的数量相等。后面通常要跟 remove 操作。

        下面看看具体的用法:

    [javascript] view plain copy
     
    1. <body>  
    2.         <p>AAAAAAAAA</p>  
    3.         <p>BBBBBBBBB</p>  
    4.         <p>CCCCCCCCC</p>  
    5.           
    6. <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>    
    7. <script>  
    8.           
    9.         var dataset = [ 10 , 20 , 30 , 40 , 50 ];  
    10.   
    11.         var update = d3.select("body").selectAll("p").data(dataset);  
    12.         var enter  = update;  
    13.           
    14.         update.text(function(d,i){  
    15.                 return "update " + d;  
    16.             });  
    17.           
    18.         enter.enter()  
    19.              .append("p")  
    20.              .text(function(d,i){  
    21.                 return "enter " + d;  
    22.             });  
    23.             
    24. </script>    
    25. </body>  

        上面的代码分别用了变量名 update 和 enter 来表示各自的部分,上面的代码的结果为:

               
        结果图可以看到新添加的元素 enter 的部分。
     
        改一部分代码,看看怎么用 exit 。
    [javascript] view plain copy
     
    1. var dataset = [ 10 , 20 ];  
    2.   
    3. var update = d3.select("body").selectAll("p").data(dataset);  
    4. var exit  = update;  
    5.   
    6. update.text(function(d,i){  
    7.         return "update " + d;  
    8.     });  
    9.   
    10. exit.exit()  
    11.      .text(function(d,i){  
    12.         return "exit";  
    13.     });  
        结果图为:
        
        可以看到,调用 exit() 函数后,实际上是返回没有对应数据的元素。通常我们可以删除掉多余的元素,如:
    [javascript] view plain copy
     
    1. exit.exit()  
    2.     .remove();  
     
        尤其以 enter 函数的使用最为多见。因为通常用 D3 做数据可视化时,我们都拥有需要的数据,而且数据量巨大,文档中很少有足够数量的与之对应的元素。所以要特别熟练 enter 的使用方法

    本文来自:

    博客为: www.ourd3js.com 

        csdn博客为: blog.csdn.net/lzhlzz 

  • 相关阅读:
    网页色彩搭配
    jquery富文本在线编辑器UEditor
    编写、部署、应用JavaBean
    图片存储构架学习
    JVM内存管理(一)
    同步or异步
    分库分表策略的可实现架构
    百万数据查询优化技巧三十则
    匿名内部类
    MySQL limit分页查询优化写法
  • 原文地址:https://www.cnblogs.com/js-wxf/p/5836460.html
Copyright © 2011-2022 走看看