Skip to content

Commit c1d230d

Browse files
committed
only set ref to null when tearing down if it is still current – closes #24
1 parent 4d842ab commit c1d230d

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

compiler/generate/visitors/attributes/addComponentAttributes.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export default function addComponentAttributes ( generator, node, local ) {
116116
` );
117117

118118
local.teardown.push( deindent`
119-
component.refs.${attribute.name} = null;
119+
if ( component.refs.${attribute.name} === ${local.name} ) component.refs.${attribute.name} = null;
120120
` );
121121
}
122122

compiler/generate/visitors/attributes/addElementAttributes.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ export default function addElementAttributes ( generator, node, local ) {
166166
` );
167167

168168
local.teardown.push( deindent`
169-
component.refs.${attribute.name} = null;
169+
if ( component.refs.${attribute.name} === ${local.name} ) component.refs.${attribute.name} = null;
170170
` );
171171
}
172172

test/compiler/refs-unset/_config.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export default {
2+
data: {
3+
x: true
4+
},
5+
6+
html: '<canvas data-x="true"></canvas>',
7+
8+
test ( assert, component, target ) {
9+
let canvas = target.querySelector( 'canvas' );
10+
assert.equal( canvas, component.refs.foo );
11+
assert.equal( canvas.getAttribute( 'data-x' ), 'true' );
12+
13+
component.set({ x: false });
14+
canvas = target.querySelector( 'canvas' );
15+
assert.equal( canvas, component.refs.foo );
16+
assert.equal( canvas.getAttribute( 'data-x' ), 'false' );
17+
18+
component.set({ x: true });
19+
canvas = target.querySelector( 'canvas' );
20+
assert.equal( canvas, component.refs.foo );
21+
assert.equal( canvas.getAttribute( 'data-x' ), 'true' );
22+
}
23+
};

test/compiler/refs-unset/main.html

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{{#if x}}
2+
<canvas ref:foo data-x='true'></canvas>
3+
{{else}}
4+
<canvas ref:foo data-x='false'></canvas>
5+
{{/if}}

0 commit comments

Comments
 (0)