Ver código fonte

fix IE9 className issue (fix #2001)

Evan You 10 anos atrás
pai
commit
c6ca553bec
2 arquivos alterados com 15 adições e 1 exclusões
  1. 1 1
      src/util/dom.js
  2. 14 0
      test/unit/specs/misc_spec.js

+ 1 - 1
src/util/dom.js

@@ -190,7 +190,7 @@ export function off (el, event, cb) {
 
 function setClass (el, cls) {
   /* istanbul ignore if */
-  if (isIE9 && el.hasOwnProperty('className')) {
+  if (isIE9 && !(el instanceof SVGElement)) {
     el.className = cls
   } else {
     el.setAttribute('class', cls)

+ 14 - 0
test/unit/specs/misc_spec.js

@@ -387,4 +387,18 @@ describe('Misc', function () {
       done()
     })
   })
+
+  it('IE9 class & :class merge during transclusion', function () {
+    var vm = new Vue({
+      el: document.createElement('div'),
+      template: '<test class="outer"></test>',
+      components: {
+        test: {
+          replace: true,
+          template: '<div :class="{\'inner\': true}"></div>'
+        }
+      }
+    })
+    expect(vm.$el.firstChild.className).toBe('outer inner')
+  })
 })