Skip to content

Commit e0d4dc4

Browse files
committed
fix(link): merge event listeners when provided in an anchor
Fix #2890
1 parent 5ef5d73 commit e0d4dc4

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/components/link.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,24 @@ export default {
125125
// in case the <a> is a static node
126126
a.isStatic = false
127127
const aData = (a.data = extend({}, a.data))
128-
aData.on = on
128+
aData.on = aData.on || {}
129+
// transform existing events in both objects into arrays so we can push later
130+
for (const event in aData.on) {
131+
const handler = aData.on[event]
132+
if (event in on) {
133+
aData.on[event] = Array.isArray(handler) ? handler : [handler]
134+
}
135+
}
136+
// append new listeners for router-link
137+
for (const event in on) {
138+
if (event in aData.on) {
139+
// on[event] is always a function
140+
aData.on[event].push(on[event])
141+
} else {
142+
aData.on[event] = handler
143+
}
144+
}
145+
129146
const aAttrs = (a.data.attrs = extend({}, a.data.attrs))
130147
aAttrs.href = href
131148
} else {

0 commit comments

Comments
 (0)