d3.event在模块化d3项目中为null

时间:2018-09-27 04:37:46

标签: javascript d3.js es6-modules

  

注意:我找到了这个问题的答案   here。问题是   解决了;无需更多答案!

我正在做一个具有以下结构的项目:

root
|
|____js
|     |__index.js
|
|__node_modules
|             |__d3-*
|             
|
|__index.html
|__package.json

index.html:

<head>
    <script src="https://unpkg.com/getlibs"></script>
</head>

<body>
<div id="detail"></div>
</div>
<!--script type="module" src="./js/index.js"></script> Also tried this method -->

<script>
    System.import('./js/index.js');
</script>
</body>

index.js:

import {select} from "d3-selection";
import {event as currentEvent} from "d3-selection";
let svg = select('#detail')
        .append('svg')
        .attr('width', 500)
        .attr('height', 500);
        svg.on('click', function() {
            console.log(window.event);
            console.log(currentEvent);
         });

输出为:

MouseEvent {isTrusted: true, screenX: 266, screenY: 247, clientX: 266, clientY: 175, …}
null

如果我通过脚本标记全局使用d3,则通过window.d3在模块内部引用d3,那么d3.event会正确捕获鼠标事件。我想创建一个模块化项目,并避免使用全局d3对象。

那是可以实现的,如果可以的话,如何实现?

0 个答案:

没有答案