Skip to content

Commit 92d7c9c

Browse files
committed
make owner vm the context for js transition hooks
1 parent add1c73 commit 92d7c9c

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

src/transition/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ var apply = exports.apply = function (el, direction, op, vm, cb) {
131131
op,
132132
transData,
133133
jsTransition,
134+
vm,
134135
cb
135136
)
136137
} else if (_.transitionEndEvent) {

src/transition/js.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,22 @@
66
* @param {Function} op - the actual DOM operation
77
* @param {Object} data - target element's transition data
88
* @param {Object} def - transition definition object
9+
* @param {Vue} vm - the owner vm of the element
910
* @param {Function} [cb]
1011
*/
1112

12-
module.exports = function (el, direction, op, data, def, cb) {
13+
module.exports = function (el, direction, op, data, def, vm, cb) {
1314
if (data.cancel) {
1415
data.cancel()
1516
data.cancel = null
1617
}
1718
if (direction > 0) { // enter
1819
if (def.beforeEnter) {
19-
def.beforeEnter(el)
20+
def.beforeEnter.call(vm, el)
2021
}
2122
op()
2223
if (def.enter) {
23-
data.cancel = def.enter(el, function () {
24+
data.cancel = def.enter.call(vm, el, function () {
2425
data.cancel = null
2526
if (cb) cb()
2627
})
@@ -29,7 +30,7 @@ module.exports = function (el, direction, op, data, def, cb) {
2930
}
3031
} else { // leave
3132
if (def.leave) {
32-
data.cancel = def.leave(el, function () {
33+
data.cancel = def.leave.call(vm, el, function () {
3334
data.cancel = null
3435
op()
3536
if (cb) cb()

test/unit/specs/transition_spec.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,12 @@ if (_.inBrowser && !_.isIE9) {
327327
})
328328

329329
it('beforeEnter', function () {
330-
def.beforeEnter = jasmine.createSpy('js transition beforeEnter')
330+
var spy = jasmine.createSpy('js transition beforeEnter')
331+
def.beforeEnter = function (el) {
332+
spy(this, el)
333+
}
331334
transition.apply(el, 1, op, vm, cb)
332-
expect(def.beforeEnter).toHaveBeenCalledWith(el)
335+
expect(spy).toHaveBeenCalledWith(vm, el)
333336
})
334337

335338
it('enter', function () {
@@ -339,10 +342,10 @@ if (_.inBrowser && !_.isIE9) {
339342
expect(op).toHaveBeenCalled()
340343
done()
341344
expect(cb).toHaveBeenCalled()
342-
spy()
345+
spy(this)
343346
}
344347
transition.apply(el, 1, op, vm, cb)
345-
expect(spy).toHaveBeenCalled()
348+
expect(spy).toHaveBeenCalledWith(vm)
346349
})
347350

348351
it('leave', function () {
@@ -352,10 +355,10 @@ if (_.inBrowser && !_.isIE9) {
352355
done()
353356
expect(op).toHaveBeenCalled()
354357
expect(cb).toHaveBeenCalled()
355-
spy()
358+
spy(this)
356359
}
357360
transition.apply(el, -1, op, vm, cb)
358-
expect(spy).toHaveBeenCalled()
361+
expect(spy).toHaveBeenCalledWith(vm)
359362
})
360363

361364
it('no def', function () {

0 commit comments

Comments
 (0)