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

do not merge empty class on component placeholder (fix #2789)

Evan You 10 лет назад
Родитель
Сommit
b5c1bf604d
2 измененных файлов с 12 добавлено и 2 удалено
  1. 2 2
      src/compiler/transclude.js
  2. 10 0
      test/unit/specs/compiler/transclude_spec.js

+ 2 - 2
src/compiler/transclude.js

@@ -151,8 +151,8 @@ function mergeAttrs (from, to) {
     value = attrs[i].value
     if (!to.hasAttribute(name) && !specialCharRE.test(name)) {
       to.setAttribute(name, value)
-    } else if (name === 'class' && !parseText(value)) {
-      value.trim().split(/\s+/).forEach(function (cls) {
+    } else if (name === 'class' && !parseText(value) && (value = value.trim())) {
+      value.split(/\s+/).forEach(function (cls) {
         addClass(to, cls)
       })
     }

+ 10 - 0
test/unit/specs/compiler/transclude_spec.js

@@ -119,6 +119,16 @@ describe('Transclude', function () {
     expect(res.getAttribute('title')).toBe('child')
   })
 
+  // #2789
+  it('empty class merge', () => {
+    el.setAttribute('class', '')
+    options.template = '<div class="test"></div>'
+    options.replace = true
+    options._asComponent = true
+    var res = transclude(el, options)
+    expect(res.getAttribute('class')).toBe('test')
+  })
+
   it('class merge for svg elements', function () {
     el.setAttribute('class', 'test')
     options.template = '<circle class="other"></circle>'