only run create() for new if blocks - fixes #665

pull/666/head
Rich Harris 7 years ago
parent 3269ed49b2
commit de2e059f4e

@ -173,8 +173,10 @@ function simple(
`
: branch.hasIntroMethod
? deindent`
if ( !${name} ) ${name} = ${branch.block}( ${params}, ${block.component} );
${name}.create();
if ( !${name} ) {
${name} = ${branch.block}( ${params}, ${block.component} );
${name}.create();
}
${name}.intro( ${parentNode}, ${anchor} );
`
: deindent`

@ -0,0 +1,45 @@
export default {
data: {
threshold: 5
},
html: `
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
`,
test ( assert, component, target, window, raf ) {
const divs = target.querySelectorAll('div');
assert.equal(divs[0].foo, 0);
raf.tick(100);
assert.equal(divs[0].foo, 1);
component.set({ threshold: 4 });
assert.equal( divs[4].foo, 1 );
raf.tick( 200 );
assert.htmlEqual(target.innerHTML, `
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
`);
component.set({ threshold: 3 });
assert.equal( divs[3].foo, 1 );
raf.tick( 300 );
assert.htmlEqual(target.innerHTML, `
<div>1</div>
<div>2</div>
<div>3</div>
`);
component.destroy();
}
};

@ -0,0 +1,20 @@
{{#each [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] as number}}
{{#if threshold >= number}}
<div transition:foo>{{number}}</div>
{{/if}}
{{/each}}
<script>
export default {
transitions: {
foo: function ( node ) {
return {
duration: 100,
tick: t => {
node.foo = t;
}
};
}
}
};
</script>
Loading…
Cancel
Save