Skip to content

Commit 8ef1856

Browse files
committed
fix resolveAsset for transcluded components in strict mode (fix vuejs#1191)
1 parent 22ac9de commit 8ef1856

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/util/options.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,11 @@ exports.resolveAsset = function resolve (options, type, id) {
345345
var assets = options[type]
346346
var asset = assets[id] || assets[camelizedId] || assets[pascalizedId]
347347
while (
348-
!asset && options._parent &&
348+
!asset &&
349+
options._parent &&
349350
(!config.strict || options._repeat)
350351
) {
351-
options = options._parent.$options
352+
options = (options._context || options._parent).$options
352353
assets = options[type]
353354
asset = assets[id] || assets[camelizedId] || assets[pascalizedId]
354355
}

test/unit/specs/misc_spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,4 +309,27 @@ describe('Misc', function () {
309309
})
310310
})
311311

312+
it('resolveAsset for repeat instance inside content in strict mode', function () {
313+
Vue.config.strict = true
314+
var el = document.createElement('div')
315+
el.innerHTML =
316+
'<outer>' +
317+
'<template v-repeat="item in items">' +
318+
'<inner>{{item}}</inner>' +
319+
'</template>' +
320+
'</outer>'
321+
new Vue({
322+
el: el,
323+
data: {
324+
items: [1, 2, 3]
325+
},
326+
components: {
327+
outer: { template: '<content></content>' },
328+
inner: { template: '<content></content>' }
329+
}
330+
})
331+
expect(el.textContent).toBe('123')
332+
Vue.config.strict = false
333+
})
334+
312335
})

0 commit comments

Comments
 (0)