Просмотр исходного кода

Fix missing removal of v-transition class (#3033)

Fix #2972
Eduardo San Martin Morote 10 лет назад
Родитель
Сommit
17690bf0cf

+ 1 - 0
src/directives/internal/transition.js

@@ -11,6 +11,7 @@ export default {
     // resolve on owner vm
     // resolve on owner vm
     var hooks = resolveAsset(this.vm.$options, 'transitions', id)
     var hooks = resolveAsset(this.vm.$options, 'transitions', id)
     id = id || 'v'
     id = id || 'v'
+    oldId = oldId || 'v'
     el.__v_trans = new Transition(el, id, hooks, this.vm)
     el.__v_trans = new Transition(el, id, hooks, this.vm)
     if (oldId) {
     if (oldId) {
       removeClass(el, oldId + '-transition')
       removeClass(el, oldId + '-transition')

+ 8 - 3
test/unit/specs/directives/internal/transition_spec.js

@@ -14,7 +14,7 @@ describe('transition', function () {
     })
     })
     var dir = new Directive({
     var dir = new Directive({
       name: 'transition',
       name: 'transition',
-      raw: 'test',
+      raw: '',
       def: def,
       def: def,
       modifiers: {
       modifiers: {
         literal: true
         literal: true
@@ -22,17 +22,22 @@ describe('transition', function () {
     }, vm, el)
     }, vm, el)
     dir._bind()
     dir._bind()
     var transition = dir.el.__v_trans
     var transition = dir.el.__v_trans
+    expect(transition.enterClass).toBe('v-enter')
+    expect(transition.leaveClass).toBe('v-leave')
+    expect(dir.el.className).toBe('v-transition')
+    dir.update('test', '')
+    transition = dir.el.__v_trans
     expect(transition.el).toBe(dir.el)
     expect(transition.el).toBe(dir.el)
     expect(transition.hooks).toBe(fns)
     expect(transition.hooks).toBe(fns)
     expect(transition.enterClass).toBe('test-enter')
     expect(transition.enterClass).toBe('test-enter')
     expect(transition.leaveClass).toBe('test-leave')
     expect(transition.leaveClass).toBe('test-leave')
-    expect(dir.el.className === 'test-transition')
+    expect(dir.el.className).toBe('test-transition')
     dir.update('lol', 'test')
     dir.update('lol', 'test')
     transition = dir.el.__v_trans
     transition = dir.el.__v_trans
     expect(transition.enterClass).toBe('lol-enter')
     expect(transition.enterClass).toBe('lol-enter')
     expect(transition.leaveClass).toBe('lol-leave')
     expect(transition.leaveClass).toBe('lol-leave')
     expect(transition.fns).toBeUndefined()
     expect(transition.fns).toBeUndefined()
-    expect(dir.el.className === 'lol-transition')
+    expect(dir.el.className).toBe('lol-transition')
   })
   })
 
 
   it('dynamic transitions', function (done) {
   it('dynamic transitions', function (done) {