Skip to content

Commit 14bcc27

Browse files
committed
fix #498 nested instance not passing $event
1 parent d21a84e commit 14bcc27

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/directives/on.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@ module.exports = {
2929
}
3030
this.reset()
3131
var vm = this.vm
32-
var root = vm.$root
3332
this.handler = function (e) {
3433
e.targetVM = vm
35-
root.$event = e
34+
vm.$event = e
3635
var res = handler(e)
37-
root.$event = null
36+
vm.$event = null
3837
return res
3938
}
4039
if (this.iframeBind) {

test/unit/specs/directives/on_spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ function trigger (target, event, process) {
66
e.initEvent(event, true, true)
77
if (process) process(e)
88
target.dispatchEvent(e)
9+
return e
910
}
1011

1112
if (_.inBrowser) {
@@ -100,5 +101,34 @@ if (_.inBrowser) {
100101
document.body.removeChild(el)
101102
})
102103

104+
it('passing $event', function () {
105+
var test = jasmine.createSpy()
106+
var vm = new Vue({
107+
el: el,
108+
template: '<a v-on="click:test($event)"></a>',
109+
methods: {
110+
test: test
111+
}
112+
})
113+
var e = trigger(el.firstChild, 'click')
114+
expect(test).toHaveBeenCalledWith(e)
115+
})
116+
117+
it('passing $event on a nested instance', function () {
118+
var test = jasmine.createSpy()
119+
var parent = new Vue({
120+
methods: {
121+
test: test
122+
}
123+
})
124+
var child = parent.$addChild({
125+
el: el,
126+
inherit: true,
127+
template: '<a v-on="click:test($event)"></a>'
128+
})
129+
var e = trigger(el.firstChild, 'click')
130+
expect(test).toHaveBeenCalledWith(e)
131+
})
132+
103133
})
104134
}

0 commit comments

Comments
 (0)