diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index 5d8ee18c0f..3890146550 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -213,8 +213,14 @@ export default class Expression { component.add_reference(name); // TODO is this redundant/misplaced? } } else if (is_contextual(component, template_scope, name)) { - if (block) { // TODO not sure what's going on here — DOM only, maybe? - this.replace(block.renderer.reference(name)); + const reference = block.renderer.reference(name); + if (node.type === 'Identifier') { + this.replace(reference); + } else { + while (node.object.type === 'MemberExpression') { + node = node.object; + } + node.object = reference; } }