;
diff --git a/src/compiler/compile/render_dom/wrappers/EachBlock.ts b/src/compiler/compile/render_dom/wrappers/EachBlock.ts
index 126b114487..2513ea1adc 100644
--- a/src/compiler/compile/render_dom/wrappers/EachBlock.ts
+++ b/src/compiler/compile/render_dom/wrappers/EachBlock.ts
@@ -7,6 +7,7 @@ import FragmentWrapper from './Fragment';
import { b, x } from 'code-red';
import ElseBlock from '../../nodes/ElseBlock';
import { Identifier, Node } from 'estree';
+import get_object from '../../utils/get_object';
export class ElseBlockWrapper extends Wrapper {
node: ElseBlock;
@@ -139,11 +140,8 @@ export default class EachBlockWrapper extends Wrapper {
view_length: fixed_length === null ? x`${iterations}.length` : fixed_length
};
- const store =
- node.expression.node.type === 'Identifier' &&
- node.expression.node.name[0] === '$'
- ? node.expression.node.name.slice(1)
- : null;
+ const object = get_object(node.expression.node);
+ const store = object.type === 'Identifier' && object.name[0] === '$' ? object.name.slice(1) : null;
node.contexts.forEach(prop => {
this.block.bindings.set(prop.key.name, {
diff --git a/test/runtime/samples/store-each-binding-deep/_config.js b/test/runtime/samples/store-each-binding-deep/_config.js
new file mode 100644
index 0000000000..70776940dd
--- /dev/null
+++ b/test/runtime/samples/store-each-binding-deep/_config.js
@@ -0,0 +1,14 @@
+export default {
+ async test({ assert, target, window }) {
+ const input = target.querySelector('input');
+
+ const event = new window.Event('input');
+ input.value = 'changed';
+ await input.dispatchEvent(event);
+
+ assert.htmlEqual(target.innerHTML, `
+
+ changed
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/store-each-binding-deep/main.svelte b/test/runtime/samples/store-each-binding-deep/main.svelte
new file mode 100644
index 0000000000..8f1cabf5b8
--- /dev/null
+++ b/test/runtime/samples/store-each-binding-deep/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#each $itemStore.prop.things as thing }
+
+{/each}
+
+{$itemStore.prop.things[0].name}
\ No newline at end of file