繁体   English   中英

在d3.js v4中重新绑定导出

[英]Rebinding exports in d3.js v4

我正在使用模块系统创建地图。 我或多或少地习惯了D3.js v3,但我仍然习惯于v4。

我正在尝试添加一个调度,但是我不知道如何在V4中重新绑定导出,因为该功能现在不可用。

因此,对于我的调度(_dis)和我的特定事件(“ changetype”),在返回导出之前,在d3 v3中进行重新绑定是正确的,例如:

d3.mapDots = function (districts){

   var _dis = d3.dispatch('changetype');

   (...)

   exports.color = function(_c){
       if(!arguments.length) return color;
       color = _c;
       return this;
   };    

   d3.rebind(exports,_dis,"on");
   return exports
   };

有谁知道如何在v4中做到这一点? 我一直在尝试dispatch.apply,但是不起作用。

谢谢!

好问题。 看来调度对象已经有所更改 ,并且d3.rebind不再存在。 由于后者已消失,因此似乎无法“复制”(通过d3.rebind.on()方法。 相反,您必须实现自己的。 在这里查看 bostock如何实现d3-brush

我整理了这个jsFiddle,以演示如何使用D3 v4实现您的要求。

重要的一点是实现.on方法:

instance.on = function() {
  var value = dispatcher.on.apply(dispatcher, arguments);
  return value === dispatcher ? instance : value;
}

而且,调度就是这样

dispatcher.call("was_clicked", this, "Hello, Foo!");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM