fixed selection handler befor/after transactions
This commit is contained in:
@@ -1,26 +1,31 @@
|
||||
export default class NamedEventHandler {
|
||||
constructor () {
|
||||
this._eventListener = {}
|
||||
this._eventListener = new Map()
|
||||
}
|
||||
on (name, f) {
|
||||
if (this._eventListener[name] == null) {
|
||||
this._eventListener[name] = []
|
||||
let fSet = this._eventListener.get(name)
|
||||
if (fSet === undefined) {
|
||||
fSet = new Set()
|
||||
this._eventListener.set(name, fSet)
|
||||
}
|
||||
this._eventListener[name].push(f)
|
||||
fSet.add(f)
|
||||
}
|
||||
off (name, f) {
|
||||
if (name == null || f == null) {
|
||||
throw new Error('You must specify event name and function!')
|
||||
}
|
||||
let listener = this._eventListener[name] || []
|
||||
this._eventListener[name] = listener.filter(e => e !== f)
|
||||
}
|
||||
emit (name, value) {
|
||||
let listener = this._eventListener[name] || []
|
||||
if (name === 'error' && listener.length === 0) {
|
||||
console.error(value)
|
||||
const listener = this._eventListener.get(name)
|
||||
if (listener !== undefined) {
|
||||
listener.remove(f)
|
||||
}
|
||||
}
|
||||
emit (name, ...args) {
|
||||
const listener = this._eventListener.get(name)
|
||||
if (listener !== undefined) {
|
||||
listener.forEach(f => f.apply(null, args))
|
||||
} else if (name === 'error') {
|
||||
console.error(args[0])
|
||||
}
|
||||
listener.forEach(l => l(value))
|
||||
}
|
||||
destroy () {
|
||||
this._eventListener = null
|
||||
|
||||
Reference in New Issue
Block a user