Skip to content

Commit 073c876

Browse files
committed
extend dependency tracking to all directives
1 parent 3258779 commit 073c876

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

src/compile/render-dom/wrappers/Element/index.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,16 @@ export default class ElementWrapper extends Wrapper {
163163
block.addAnimation();
164164
}
165165

166-
if (node.classes) {
167-
node.classes.forEach(({ expression }) => {
168-
if (expression) {
169-
block.addDependencies(expression.dependencies);
170-
}
171-
});
172-
}
166+
// add directive and handler dependencies
167+
[node.animation, node.outro, ...node.actions, ...node.classes].forEach(directive => {
168+
if (directive && directive.expression) {
169+
block.addDependencies(directive.expression.dependencies);
170+
}
171+
});
172+
173+
node.handlers.forEach(handler => {
174+
block.addDependencies(handler.dependencies);
175+
});
173176

174177
if (this.parent) {
175178
if (node.actions.length > 0) this.parent.cannotUseInnerHTML();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export default {
2+
data: {
3+
items: [
4+
'whatever'
5+
],
6+
foo: 'wrong',
7+
bar: 'right'
8+
},
9+
10+
test(assert, component, target, window) {
11+
const button = target.querySelector('button');
12+
const event = new window.MouseEvent('click');
13+
14+
button.dispatchEvent(event);
15+
assert.equal(component.get().foo, 'right');
16+
17+
component.set({ bar: 'left' });
18+
button.dispatchEvent(event);
19+
assert.equal(component.get().foo, 'left');
20+
}
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{#each items as item}
2+
<button on:click='set({ foo: bar })'>{item}</button>
3+
{/each}
4+
5+
<p>foo: {foo}</p>

0 commit comments

Comments
 (0)