set select value after options have been created (#301)

pull/304/head
Rich Harris 9 years ago
parent 2a48dd9c97
commit 530277f9f8

@ -10,7 +10,7 @@ export default {
return Component.enter( generator, node ); return Component.enter( generator, node );
} }
const name = generator.current.getUniqueName( node.name ); const name = node.localName = generator.current.getUniqueName( node.name );
const local = { const local = {
name, name,
@ -111,6 +111,10 @@ export default {
return Component.leave( generator, node ); return Component.leave( generator, node );
} }
if ( generator.current.initialUpdate ) {
generator.current.builders.init.addBlock( generator.current.initialUpdate );
}
generator.pop(); generator.pop();
} }
}; };

@ -116,7 +116,7 @@ export default function createBinding ( generator, node, attribute, current, loc
} }
` ); ` );
} else { } 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.addEventListener = true;
generator.uses.removeEventListener = true; generator.uses.removeEventListener = true;
@ -130,20 +130,16 @@ export default function createBinding ( generator, node, attribute, current, loc
} }
addEventListener( ${local.name}, '${eventName}', ${handler} ); addEventListener( ${local.name}, '${eventName}', ${handler} );
${updateElement};
` ); ` );
generator.current.initialUpdate = updateElement;
local.update.addLine( local.update.addLine(
`if ( !${local.name}_updating ) ${updateElement};` `if ( !${local.name}_updating ) ${updateElement}`
); );
generator.current.builders.teardown.addLine( deindent` generator.current.builders.teardown.addLine( deindent`
removeEventListener( ${local.name}, '${eventName}', ${handler} ); removeEventListener( ${local.name}, '${eventName}', ${handler} );
` ); ` );
} }
if ( node.name === 'select' ) {
generator.hasComplexBindings = true;
local.init.addLine( `component._bindings.push( ${handler} )` );
}
} }

Loading…
Cancel
Save