diff --git a/src/generators/dom/visitors/EachBlock.ts b/src/generators/dom/visitors/EachBlock.ts index 82a117eaae82..284500b737de 100644 --- a/src/generators/dom/visitors/EachBlock.ts +++ b/src/generators/dom/visitors/EachBlock.ts @@ -33,7 +33,9 @@ export default function visitEachBlock( const { snippet } = block.contextualise(node.expression); + block.builders.init.addLine(`var ${each_block_value} = ${snippet};`); + block.builders.init.addLine(`if(!${each_block_value}) throw new Error('Missing field or value is null ${node.expression}');` if (node.key) { keyed(generator, block, state, node, snippet, vars); diff --git a/test/runtime/samples/each-block-missing-value/_config.js b/test/runtime/samples/each-block-missing-value/_config.js new file mode 100644 index 000000000000..13238ca9cb97 --- /dev/null +++ b/test/runtime/samples/each-block-missing-value/_config.js @@ -0,0 +1,19 @@ +export default { + data: { + noanimals: [ 'alpaca', 'baboon', 'capybara' ] + }, + + html: ` +

alpaca

+

baboon

+

capybara

+ `, + + test ( assert, component, target ) { + component.set({ noanimals: [ 'alpaca', 'baboon', 'caribou', 'dogfish' ] }); + assert.htmlEqual( target.innerHTML, `` ); + + component.set({ animals: [] }); + assert.htmlEqual( target.innerHTML, '' ); + } +}; diff --git a/test/runtime/samples/each-block-missing-value/main.html b/test/runtime/samples/each-block-missing-value/main.html new file mode 100644 index 000000000000..23bfc3c46565 --- /dev/null +++ b/test/runtime/samples/each-block-missing-value/main.html @@ -0,0 +1,3 @@ +{{#each animals as animal}} +

{{animal}}

+{{/each}}