在模块化ES6中使用D3

时间:2017-09-23 18:08:00

标签: javascript d3.js es6-modules es6-class

我正在尝试使用D3的拖动功能“拖动一个点”(一个svg圈)。为了保持模块化,我有多个文件。从“Dot类”文件中,在“App.js”文件中实例化一个点有效!然而,阻力行为趋于平缓。

我已经在这一段时间,修补和“谷歌搜索”。现在拉头发。我需要第二眼。我错了什么?

谢谢!

Dot.js:

import * as d3 from "d3";

export class Dot {
  constructor(cx, cy, rad){
    this.cx = cx;
    this.cy = cy;
    this.radius = rad;
    this.svg = null;
    this.dot = null;
    this.width = 199;
    this.height = 533;
  }

  buildDot(){
    this.dot =
    d3.select("body")
      .append("svg")
        .attr("width",this.width)
        .attr("height",this.height)
        .append("circle")
          .attr("cx",this.cx)
          .attr("cy",this.cy)
          .attr("r",this.radius);

    return this.dot;
  }

  onDrag(){
    console.log("dragging");
  }
}

App.js:

import {Dot} from './js/Dot';
import * as d3 from "d3";

(function(){

  var dot = new Dot(200, 200, 99).buildDot();
  console.log(dot);
  dot.call(d3.drag().on("drag", dot.onDrag));

})();

1 个答案:

答案 0 :(得分:2)

确定。所以,问题是,当我建立" dot,我随后要求drag eventlistener在onDrag元素上调用dot。这是,我没有从" Dot"中调用onDrag方法。类实例。

这么多时间......在我来到这里之前,我需要一个健全的检查方式。