fix dynamic event handler expression

pull/3934/head
Tan Li Hau 5 years ago
parent feafc34f8e
commit 58b7b5b325

@ -44,6 +44,8 @@ export default class EventHandler extends Node {
this.reassigned = component.var_lookup.get(info.expression.name).reassigned;
}
} else if (this.expression.dynamic_dependencies().length > 0) {
this.reassigned = true;
}
} else {
this.handler_name = component.get_unique_name(`${sanitize(this.name)}_handler`);

@ -0,0 +1,20 @@
export default {
html: `<button>bar</button>`,
async test({ assert, component, target, window }) {
const [button] = target.querySelectorAll(
'button'
);
const event = new window.MouseEvent('click');
await button.dispatchEvent(event);
assert.htmlEqual(target.innerHTML, `<button>foo</button>`);
await button.dispatchEvent(event);
assert.htmlEqual(target.innerHTML, `<button>bar</button>`);
await button.dispatchEvent(event);
assert.htmlEqual(target.innerHTML, `<button>foo</button>`);
},
};

@ -0,0 +1,12 @@
<script>
let name = 'bar';
function foo() {
name = 'foo';
}
function bar() {
name = 'bar';
}
</script>
<button on:click={name === 'bar' ? foo : bar}>{name}</button>
Loading…
Cancel
Save