diff --git a/compiler/generate/index.js b/compiler/generate/index.js index fdf88c5f60..13bb40c4df 100644 --- a/compiler/generate/index.js +++ b/compiler/generate/index.js @@ -45,6 +45,13 @@ export default function generate ( parsed, source, options ) { } }, + createAnchor ( _name, description = '' ) { + const name = `${_name}_anchor`; + const statement = `document.createComment( ${JSON.stringify( description )} )`; + generator.addElement( name, statement, true ); + return name; + }, + addRenderer ( fragment ) { if ( fragment.autofocus ) { fragment.initStatements.push( `${fragment.autofocus}.focus();` ); diff --git a/compiler/generate/visitors/EachBlock.js b/compiler/generate/visitors/EachBlock.js index 53b025a6fa..53f9a07d7e 100644 --- a/compiler/generate/visitors/EachBlock.js +++ b/compiler/generate/visitors/EachBlock.js @@ -5,7 +5,6 @@ export default { enter ( generator, node ) { const i = generator.counters.each++; const name = `eachBlock_${i}`; - const anchor = `${name}_anchor`; const renderer = `renderEachBlock_${i}`; const listName = `${name}_value`; @@ -14,7 +13,7 @@ export default { const { dependencies, snippet } = generator.contextualise( node.expression ); - generator.addElement( anchor, `document.createComment( ${JSON.stringify( `#each ${generator.source.slice( node.expression.start, node.expression.end )}` )} )`, true ); + const anchor = generator.createAnchor( name, `#each ${generator.source.slice( node.expression.start, node.expression.end )}` ); generator.current.initStatements.push( deindent` var ${name}_value = ${snippet}; diff --git a/compiler/generate/visitors/IfBlock.js b/compiler/generate/visitors/IfBlock.js index 05ff5887b9..2c8fbd30ca 100644 --- a/compiler/generate/visitors/IfBlock.js +++ b/compiler/generate/visitors/IfBlock.js @@ -56,13 +56,12 @@ export default { const { params, target } = generator.current; const name = `ifBlock_${i}`; - const anchor = `${name}_anchor`; const getBlock = `getBlock_${i}`; const currentBlock = `currentBlock_${i}`; const conditionsAndBlocks = getConditionsAndBlocks( generator, node, `renderIfBlock_${i}` ); - generator.addElement( anchor, `document.createComment( ${JSON.stringify( `#if ${generator.source.slice( node.expression.start, node.expression.end )}` )} )`, true ); + const anchor = generator.createAnchor( name, `#if ${generator.source.slice( node.expression.start, node.expression.end )}` ); generator.current.initStatements.push( deindent` function ${getBlock} ( ${params} ) {