diff --git a/src/generators/dom/visitors/Element.js b/src/generators/dom/visitors/Element.js index 6a0a19498c..6e7370a15b 100644 --- a/src/generators/dom/visitors/Element.js +++ b/src/generators/dom/visitors/Element.js @@ -10,7 +10,7 @@ export default { return Component.enter( generator, node ); } - const name = generator.current.getUniqueName( node.name ); + const name = node.localName = generator.current.getUniqueName( node.name ); const local = { name, @@ -111,6 +111,10 @@ export default { return Component.leave( generator, node ); } + if ( generator.current.initialUpdate ) { + generator.current.builders.init.addBlock( generator.current.initialUpdate ); + } + generator.pop(); } }; diff --git a/src/generators/dom/visitors/attributes/binding/index.js b/src/generators/dom/visitors/attributes/binding/index.js index 9e04ee3479..d884765e52 100644 --- a/src/generators/dom/visitors/attributes/binding/index.js +++ b/src/generators/dom/visitors/attributes/binding/index.js @@ -116,7 +116,7 @@ export default function createBinding ( generator, node, attribute, current, loc } ` ); } else { - const updateElement = `${local.name}.${attribute.name} = ${contextual ? attribute.value : `root.${attribute.value}`}`; + const updateElement = `${local.name}.${attribute.name} = ${contextual ? attribute.value : `root.${attribute.value}`};`; generator.uses.addEventListener = true; generator.uses.removeEventListener = true; @@ -130,20 +130,16 @@ export default function createBinding ( generator, node, attribute, current, loc } addEventListener( ${local.name}, '${eventName}', ${handler} ); - ${updateElement}; ` ); + generator.current.initialUpdate = updateElement; + local.update.addLine( - `if ( !${local.name}_updating ) ${updateElement};` + `if ( !${local.name}_updating ) ${updateElement}` ); generator.current.builders.teardown.addLine( deindent` removeEventListener( ${local.name}, '${eventName}', ${handler} ); ` ); } - - if ( node.name === 'select' ) { - generator.hasComplexBindings = true; - local.init.addLine( `component._bindings.push( ${handler} )` ); - } }