From 3e3b933a021c4d4073bf8874bcc1887cd7cae257 Mon Sep 17 00:00:00 2001 From: tanhauhau Date: Tue, 14 Dec 2021 21:27:27 +0800 Subject: [PATCH] fix binding under scope --- .../render_dom/wrappers/Element/Binding.ts | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) 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() {