From d3451a530f44de4b1112a7186bd227e93f509cfa Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 26 Mar 2018 21:15:32 -0400 Subject: [PATCH 1/2] when mounting dynamic components, set ref if required --- src/generators/nodes/Component.ts | 9 ++++++--- test/runtime/samples/dynamic-component-ref/Foo.html | 1 + test/runtime/samples/dynamic-component-ref/_config.js | 7 +++++++ test/runtime/samples/dynamic-component-ref/main.html | 11 +++++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 test/runtime/samples/dynamic-component-ref/Foo.html create mode 100644 test/runtime/samples/dynamic-component-ref/_config.js create mode 100644 test/runtime/samples/dynamic-component-ref/main.html diff --git a/src/generators/nodes/Component.ts b/src/generators/nodes/Component.ts index e0a78d886c6b..6cd3e7976bf1 100644 --- a/src/generators/nodes/Component.ts +++ b/src/generators/nodes/Component.ts @@ -307,9 +307,12 @@ export default class Component extends Node { ); } - block.builders.mount.addLine( - `if (${name}) ${name}._mount(${parentNode || '#target'}, ${parentNode ? 'null' : 'anchor'});` - ); + block.builders.mount.addLine(deindent` + if (${name}) { + ${name}._mount(${parentNode || '#target'}, ${parentNode ? 'null' : 'anchor'}); + ${ref && `#component.refs.${ref.name} = ${name};`} + } + `); const updateMountNode = this.getUpdateMountNode(anchor); diff --git a/test/runtime/samples/dynamic-component-ref/Foo.html b/test/runtime/samples/dynamic-component-ref/Foo.html new file mode 100644 index 000000000000..bc56c4d89448 --- /dev/null +++ b/test/runtime/samples/dynamic-component-ref/Foo.html @@ -0,0 +1 @@ +Foo diff --git a/test/runtime/samples/dynamic-component-ref/_config.js b/test/runtime/samples/dynamic-component-ref/_config.js new file mode 100644 index 000000000000..5ab702935bab --- /dev/null +++ b/test/runtime/samples/dynamic-component-ref/_config.js @@ -0,0 +1,7 @@ +export default { + html: `Foo`, + + test(assert, component) { + assert.ok(component.refs.test); + } +}; diff --git a/test/runtime/samples/dynamic-component-ref/main.html b/test/runtime/samples/dynamic-component-ref/main.html new file mode 100644 index 000000000000..ff506517bc9d --- /dev/null +++ b/test/runtime/samples/dynamic-component-ref/main.html @@ -0,0 +1,11 @@ +<:Component {foo} ref:test/> + + From 6ff60db212aeccc05370bd9db77cd8b155242744 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 27 Mar 2018 01:29:26 -0400 Subject: [PATCH 2/2] use addBlock instead of addLine --- src/generators/nodes/Component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generators/nodes/Component.ts b/src/generators/nodes/Component.ts index 6cd3e7976bf1..481c7de0e392 100644 --- a/src/generators/nodes/Component.ts +++ b/src/generators/nodes/Component.ts @@ -307,7 +307,7 @@ export default class Component extends Node { ); } - block.builders.mount.addLine(deindent` + block.builders.mount.addBlock(deindent` if (${name}) { ${name}._mount(${parentNode || '#target'}, ${parentNode ? 'null' : 'anchor'}); ${ref && `#component.refs.${ref.name} = ${name};`}