diff --git a/src/fragment/factory.js b/src/fragment/factory.js index b4aff212802..c11b2dcc77d 100644 --- a/src/fragment/factory.js +++ b/src/fragment/factory.js @@ -18,7 +18,7 @@ export default function FragmentFactory (vm, el) { this.vm = vm var template var isString = typeof el === 'string' - if (isString || isTemplate(el)) { + if (isString || isTemplate(el) && !el.hasAttribute('v-if')) { template = parseTemplate(el, true) } else { template = document.createDocumentFragment() diff --git a/test/unit/specs/misc_spec.js b/test/unit/specs/misc_spec.js index acdd1cedbf4..45c86daef5f 100644 --- a/test/unit/specs/misc_spec.js +++ b/test/unit/specs/misc_spec.js @@ -537,4 +537,13 @@ describe('Misc', function () { }) expect(vm.$el.querySelector('image-field').namespaceURI).not.toMatch(/svg/) }) + + // #2657 + it('template v-for with v-if', function () { + var vm = new Vue({ + el: document.createElement('div'), + template: '
' + }) + expect(vm.$el.textContent).toBe('135') + }) })