【问题标题】:How to create d3 svg in vue-cli?如何在 vue-cli 中创建 d3 svg?
【发布时间】:2018-05-19 14:01:44
【问题描述】:

我是 d3 新手,正在尝试在 vue-cli 中创建 d3 SVG。

浏览器没有显示如下代码,但它可以在没有 vue 的 HTML 上运行。

谁能告诉我我的编码有什么问题?

非常感谢!

<template>
  <div>
   <div id='chart' ></div>
  </div>
</template>
<script>
  import * as d3 from 'd3'

  export default {
    name: 'priceChart',
    data() {
      return {
     }
    },
  methods:{
    createSvg(){
    const svg = 
    d3.select('#chart').append('svg')
    .attr('width',500)
    .attr('height',400);

    svg.append('rect')
    .attr('x',0)
    .attr('y',0)
    .attr('width',500)
    .attr('height',400)
    .style('fill','red')
    }
   },
 created(){
   this.createSvg();
   }
 }
</script>

【问题讨论】:

    标签: d3.js charts vue.js


    【解决方案1】:

    DOM 元素在created 方法中不可用,你应该把它放在mounted

    在 created 钩子中,您将能够访问反应数据和 事件是活跃的。模板和虚拟 DOM 尚未安装 或渲染。

    <template>
      <div>
       <div id='chart' ></div>
      </div>
    </template>
    <script>
      import * as d3 from 'd3'
    
      export default {
        name: 'priceChart',
        data() {
          return {
         }
        },
      methods:{
        createSvg(){
        const svg = 
        d3.select('#chart').append('svg')
        .attr('width',500)
        .attr('height',400);
    
        svg.append('rect')
        .attr('x',0)
        .attr('y',0)
        .attr('width',500)
        .attr('height',400)
        .style('fill','red')
        }
       },
     mounted(){
       this.createSvg();
       }
     }
    </script>
    

    【讨论】:

    • 没问题!编码愉快!
    • 为避免与多个id的冲突,您可以将&lt;div id="chart"&gt;d3.select("#chart")分别替换为&lt;div ref="chart"&gt;d3.select(this.$refs.chart)
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    相关资源
    最近更新 更多