handlebars.js检查列表是否为空

时间:2012-04-30 10:06:08

标签: handlebars.js

Handlebars.js是否有办法在进行并迭代列表/集合之前模板检查集合或列表是空还是空?

// if list is empty do some rendering ... otherwise do the normal
{{#list items}}

{{/list}}



{{#each items}}

{{/each}}

5 个答案:

答案 0 :(得分:212)

如果您想要显示一次,而仅在数组有数据时显示,请使用

{{#if items.length}}
    //Render
{{/if}}

.length将为空数组返回0,因此我们获得了一个真正的假值。

答案 1 :(得分:196)

“each”标签也可以带有“else”部分。所以最简单的形式是:

{{#each items}}
// render item
{{else}}
// render empty
{{/each}}

答案 2 :(得分:35)

好吧,这比我想象的要简单:

{{#if items}}
// render items

{{#each items}}
// render item
{{/each}}

{{else}}
// render empty
{{/if}}

答案 3 :(得分:7)

如果要检查集合(光标)是否为空,之前的答案将无用,您必须使用count()方法:

{{#if items.count}}
    <p>There is {{items.count}} item(s).</p>
{{else}}
    <p>There is nothing</p>
{{/if}}

答案 4 :(得分:1)

对于需要在{{#if}}之上使用{{#each}}的任何人(即for循环中的if循环)。它们有三个不同的数组列表。

在if语句中使用查找解决了我的问题。因为,上述答案并没有解决我的问题。

这是我的代码,

{{#each OtherRandomItems}}

  {{this}}

  {{lookup ../AnotherRandomItems @index}}

  {{#if (lookup ../RandomItems @index)}}
  // render items
  {{else}}
  // render empty
  {{/if}}

{{/each}}