10000 transclude class merging should skip interpolated class (fix #2085) · vuejs/vue@cdf233f · GitHub
[go: up one dir, main page]

Skip to content

Commit cdf233f

Browse files
committed
transclude class merging should skip interpolated class (fix #2085)
1 parent da9e036 commit cdf233f

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/compiler/transclude.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { parseTemplate } from '../parsers/template'
2+
import { parseText } from '../parsers/text'
23
import {
34
warn,
45
isTemplate,
@@ -149,7 +150,7 @@ function mergeAttrs (from, to) {
149150
value = attrs[i].value
150151
if (!to.hasAttribute(name) && !specialCharRE.test(name)) {
151152
to.setAttribute(name, value)
152-
} else if (name === 'class') {
153+
} else if (name === 'class' && !parseText(value)) {
153154
value.split(/\s+/).forEach(function (cls) {
154155
addClass(to, cls)
155156
})

test/unit/specs/misc_spec.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,4 +428,21 @@ describe('Misc', function () {
428428
})
429429
expect(vm.$el.firstChild.className).toBe('hi test-transition')
430430
})
431+
432+
it('transclude class merging should skip interpolated class', function () {
433+
var vm = new Vue({
434+
el: document.createElement('div'),
435+
template: '<test class="outer-{{test}}"></test>',
436+
data: {
437+
test: 'hi'
438+
},
439+
components: {
440+
test: {
441+
template: '<div class="inner"></div>',
442+
replace: true
443+
}
444+
}
445+
})
446+
expect(vm.$el.firstChild.className).toBe('outer-hi')
447+
})
431448
})

0 commit comments

Comments
 (0)
0