Skip to content

Commit a0404f7

Browse files
committed
update spread props in each blocks without other dynamic attributes - fixes #1337
1 parent c84bd85 commit a0404f7

File tree

7 files changed

+70
-1
lines changed

7 files changed

+70
-1
lines changed

src/generators/nodes/Component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default class Component extends Node {
3737
attribute.expression.arguments.forEach((arg: Node) => {
3838
block.addDependencies(arg.metadata.dependencies);
3939
});
40-
} else if (attribute.type === 'Binding') {
40+
} else if (attribute.type === 'Binding' || attribute.type === 'Spread') {
4141
block.addDependencies(attribute.metadata.dependencies);
4242
}
4343
}

src/generators/nodes/Element.ts

+2
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ export default class Element extends Node {
8989
}
9090
} else if (attribute.type === 'Action' && attribute.expression) {
9191
block.addDependencies(attribute.metadata.dependencies);
92+
} else if (attribute.type === 'Spread') {
93+
block.addDependencies(attribute.metadata.dependencies);
9294
}
9395
}
9496
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div data-a={a} data-b={b}></div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
export default {
2+
html: `
3+
<div data-a="1" data-b="2"></div>
4+
<div data-a="3" data-b="4"></div>
5+
`,
6+
7+
data: {
8+
things: [
9+
{ a: 1, b: 2 },
10+
{ a: 3, b: 4 }
11+
]
12+
},
13+
14+
test(assert, component, target) {
15+
const { things } = component.get();
16+
17+
component.set({
18+
things: things.reverse()
19+
});
20+
21+
assert.htmlEqual(target.innerHTML, `
22+
<div data-a="3" data-b="4"></div>
23+
<div data-a="1" data-b="2"></div>
24+
`);
25+
},
26+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{#each things as thing}
2+
<Nested {...thing}/>
3+
{/each}
4+
5+
<script>
6+
import Nested from './Nested.html';
7+
8+
export default {
9+
components: { Nested }
10+
};
11+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
export default {
2+
html: `
3+
<div data-a="1" data-b="2"></div>
4+
<div data-c="3" data-d="4"></div>
5+
`,
6+
7+
data: {
8+
things: [
9+
{ 'data-a': 1, 'data-b': 2 },
10+
{ 'data-c': 3, 'data-d': 4 }
11+
]
12+
},
13+
14+
test(assert, component, target) {
15+
const { things } = component.get();
16+
17+
component.set({
18+
things: things.reverse()
19+
});
20+
21+
assert.htmlEqual(target.innerHTML, `
22+
<div data-c="3" data-d="4"></div>
23+
<div data-a="1" data-b="2"></div>
24+
`);
25+
},
26+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{#each things as thing}
2+
<div {...thing}></div>
3+
{/each}

0 commit comments

Comments
 (0)