Skip to content

Commit a3cdcac

Browse files
committed
Fix bug in <content> select.
Fallback wasn't used when none of the nodes matched by the selector were children of the target. refs vuejs#786
1 parent cfdfda3 commit a3cdcac

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/compiler/transclude.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,13 @@ function transcludeContent (el, raw) {
8888
if (select) { // select content
8989
selected = raw.querySelectorAll(select)
9090
if (selected.length) {
91-
outlet.content = _.toArray(selected).filter(function(element) {
92-
return element.parentNode === raw
91+
selected = _.toArray(selected).filter(function(node) {
92+
return node.parentNode === raw
9393
})
94-
} else {
95-
outlet.content = _.toArray(outlet.childNodes)
9694
}
95+
outlet.content = selected.length
96+
? selected
97+
: _.toArray(outlet.childNodes)
9798
} else { // default content
9899
main = outlet
99100
}

test/unit/specs/compiler/transclude_spec.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,13 @@ if (_.inBrowser) {
110110
})
111111

112112
it('select should only match children', function () {
113-
el.innerHTML = '<p class="b">select b</p><span><p class="b">nested b</p></span>'
114-
options.template = '<content select=".a"><p>fallback a</p></content><content select=".b">fallback b</content>'
113+
el.innerHTML = '<p class="b">select b</p><span><p class="b">nested b</p></span><span><p class="c">nested c</p></span>'
114+
options.template = '<content select=".a"><p>fallback a</p></content><content select=".b">fallback b</content><content select=".c">fallback c</content>'
115115
var res = transclude(el, options)
116-
expect(res.childNodes.length).toBe(2)
116+
expect(res.childNodes.length).toBe(3)
117117
expect(res.firstChild.textContent).toBe('fallback a')
118-
expect(res.lastChild.textContent).toBe('select b')
118+
expect(res.childNodes[1].textContent).toBe('select b')
119+
expect(res.lastChild.textContent).toBe('fallback c')
119120
})
120121

121122
})

0 commit comments

Comments
 (0)