Svg.js 添加事件监听器 —— on 方法:报错:应有 2-4 个参数,但获得 1 个(中文文档与英文文档示例有出入)
报错:应有 2-4 个参数,但获得 1 个。ts-plugin(2554) svg.js.d.ts(697, 7): 未提供 "cb" 的自变量
在“添加多个事件监听器”中,中文文档给的示例是错的
中文文档示例:
// 添加单个事件监听器 element.on('click', (event) => { console.log('点击事件') }) // 添加多个事件监听器 element.on({ click(event) { console.log('点击事件') }, mouseover(event) { console.log('鼠标移入') }, })
但看源码:
// EventTarget.js class EventTarget { events: Eventobject addEventListener(): void dispatch(event: Event | string, data?: object): Event dispatchEvent(event: Event): boolean fire(event: Event | string, data?: object): this getEventHolder(): this | Node getEventTarget(): this | Node on( events: string | Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions ): this off( events?: string | Event[], cb?: EventListener | number, options?: AddEventListenerOptions ): this removeEventListener(): void }
从源码上看,第一个参数events类型要么是字符串string要么是事件数组Event[ ],并不支持对象形式的多事件绑定,然后事件的处理逻辑放在cb第二个参数中。
英文文档给出的示例才是对的:
// Passing multiple event types can be done with either an array: element.on(['click', 'mouseover'], handler)

浙公网安备 33010602011771号