diff --git a/src/compiler/compile/render_dom/wrappers/Element/Binding.ts b/src/compiler/compile/render_dom/wrappers/Element/Binding.ts index 471607a9e3..bc218a510b 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Binding.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Binding.ts @@ -71,18 +71,27 @@ export default class BindingWrapper { } get_update_dependencies() { - const object = get_object(this.node.expression.node).name; + const object = this.object; const dependencies = new Set(); - dependencies.add(object); + if (this.node.expression.template_scope.names.has(object)) { + this.node.expression.template_scope.dependencies_for_name + .get(object) + .forEach((name) => dependencies.add(name)); + } else { + dependencies.add(object); + } + const result = new Set(dependencies); + dependencies.forEach((dependency) => { + const indirect_dependencies = this.parent.renderer.component.indirect_dependencies.get(dependency); + if (indirect_dependencies) { + indirect_dependencies.forEach(indirect_dependency => { + result.add(indirect_dependency); + }); + } + }); - const indirect_dependencies = this.parent.renderer.component.indirect_dependencies.get(object); - if (indirect_dependencies) { - indirect_dependencies.forEach(indirect_dependency => { - dependencies.add(indirect_dependency); - }); - } - return dependencies; + return result; } is_readonly_media_attribute() {