called reactive functions for reassignments

pull/4878/head
Tan Li Hau 5 years ago
parent 25488772e2
commit 62acfb9e25

@ -60,7 +60,7 @@ export default class Binding extends Node {
scope.dependencies_for_name.get(name).forEach(name => { scope.dependencies_for_name.get(name).forEach(name => {
const variable = component.var_lookup.get(name); const variable = component.var_lookup.get(name);
if (variable) { if (variable) {
variable[this.expression.node.type === 'MemberExpression' ? 'mutated' : 'reassigned'] = true; variable['mutated'] = true;
} }
}); });
} else { } else {

@ -0,0 +1,27 @@
let value;
let called = 0;
function callback(_value) {
called ++;
value = _value;
}
export default {
props: {
callback,
},
async test({ assert, component, target, window }) {
assert.equal(called, 1);
const input = target.querySelector('input');
const event = new window.Event('input');
input.value = 'h';
await input.dispatchEvent(event);
assert.equal(called, 2);
assert.equal(value.length, 3);
assert.equal(value[0], 'h');
assert.equal(value[1], '2');
assert.equal(value[2], '3');
}
};

@ -0,0 +1,10 @@
<script>
const refs = ['1','2','3']
export let callback = () => {};
$: callback(refs);
</script>
{#each refs as ref}
<input bind:value={ref} />
{/each}
Loading…
Cancel
Save