generate correct code for hoisted event handlers

pull/1367/head
Rich Harris 7 years ago
parent 577e28b8be
commit 2c7d935162

@ -596,18 +596,18 @@ export default class Element extends Node {
// create the handler body // create the handler body
const handlerBody = deindent` const handlerBody = deindent`
${eventHandlerUsesComponent && ${eventHandlerUsesComponent &&
`var #component = ${ctx}._svelte.component;`} `var ${component} = ${ctx}._svelte.component;`}
${handler.dependencies.size > 0 && `const ctx = #component.get();`} ${handler.dependencies.size > 0 && `const ctx = ${component}.get();`}
${handler.snippet ? ${handler.snippet ?
handler.snippet : handler.snippet :
`#component.fire("${handler.name}", event);`} `${component}.fire("${handler.name}", event);`}
`; `;
if (isCustomEvent) { if (isCustomEvent) {
block.addVariable(handlerName); block.addVariable(handlerName);
block.builders.hydrate.addBlock(deindent` block.builders.hydrate.addBlock(deindent`
${handlerName} = %events-${handler.name}.call(#component, ${this.var}, function(event) { ${handlerName} = %events-${handler.name}.call(${component}, ${this.var}, function(event) {
${handlerBody} ${handlerBody}
}); });
`); `);

Loading…
Cancel
Save