diff --git a/components/_util/vnode.js b/components/_util/vnode.js index 3919d75d4..2df7e56b8 100644 --- a/components/_util/vnode.js +++ b/components/_util/vnode.js @@ -46,7 +46,7 @@ export function cloneVNodes (vnodes, deep) { export function cloneElement (n, nodeProps, clone) { const node = clone ? cloneVNode(n, true) : n - const { props = {}, key, on = {}} = nodeProps + const { props = {}, key, on = {}, listeners = {}} = nodeProps const data = node.data || {} const { style = data.style, class: cls = data.class, @@ -58,10 +58,9 @@ export function cloneElement (n, nodeProps, clone) { node.componentOptions.propsData = node.componentOptions.propsData || {} node.componentOptions.listeners = node.componentOptions.listeners || {} node.componentOptions.propsData = { ...node.componentOptions.propsData, ...props } - node.componentOptions.listeners = { ...node.componentOptions.listeners, ...on } - } else { - node.data.on = { ...(node.data.on || {}), ...on } + node.componentOptions.listeners = { ...node.componentOptions.listeners, ...listeners } } + node.data.on = { ...(node.data.on || {}), ...on } if (key !== undefined) { node.key = key diff --git a/components/button/demo/index.vue b/components/button/demo/index.vue index 4937897eb..ef9369aa6 100644 --- a/components/button/demo/index.vue +++ b/components/button/demo/index.vue @@ -25,7 +25,7 @@ export default { } return (