Skip to content

对象事件

v2.3.18

支持了鼠标事件的对象有 SbmModelPoi,除了在创建对象时通过传参的方式绑定对应事件。

我们现在支持了使用 EventDispatcher 的方式来绑定和触发事件。

使用这种方式解决了之前单个对象无法绑定多个事件监听器的问题,并且使用方式也更趋近与原生 DOM 事件的使用方式。

EventDispatcher 方式支持的对象事件有 clickrightClickdblClick

当然你可以定义自己的事件,然后手动调用 dispatchEvent

样例

addEventListener

增加事件

用法:

ts
const sbmClickHandle = (params) => {
  /**
   * 注意!函数执行完毕,target 会被销毁,所以需要将 target 保存
   */
  const { target } = params;

  setTimeout(() => {
    // 这里的 target 为 null !!!
    console.log(params.target); // null

    console.log(target); // [[sbm object]]
  });
};

sbm.addEventListener('click', sbmClickHandle);

removeEventListener

移除事件

用法:

js
sbm.removeEventListener('click', sbmClickHandle);

dispatchEvent

派发事件,由内部触发。

用法:

js
sbm.dispatchEvent({ type: 'click' });

hasEventListener

检查事件

用法:

js
const hasEvent = sbm.hasEventListener('click', sbmClickHandle);

if (hasEvent) {
  console.log('sbm 包含该事件处理');
}

浙ICP备16043491号