我经常这样做,使用items
助手两次:
{{#if items}}
<h1>Items</h1>
{{#each items}}
{{> item}}
{{/each}}
{{/if}}
Template.foo.helpers
items: ->
Items.find
bar: true
,
sort: created: -1
transform: (item) ->
i.good = true
i
Meteor是否在这种情况下做了额外的工作?切换if
以使用类似areItems
的内容会更高效吗?
areItems: ->
Items.find
bar: true
.count() > 0
答案 0 :(得分:9)
您可以使用{{else}}
{{#each this}}
{{> item}}
{{else}}
<h1>No Items</h1>
{{/each}}
答案 1 :(得分:6)
在模板中,您可以使用{{#with items}}然后使用'this.count'或'this.length'来检查您的助手是否返回了任何项目。
如果'items'是光标,请使用this.count,例如find()操作的结果:
{{#with items}}
{{#if this.count}}
<h1>Items</h1>
{{#each this}}
{{> item}}
{{/each}}
{{/if}}
{{/with}}
如果'items'是一个数组,请使用this.length:
{{#with items}}
{{#if this.length}}
<h1>Items</h1>
{{#each this}}
{{> item}}
{{/each}}
{{/if}}
{{/with}}
答案 2 :(得分:1)
使用#with
,#if this.length
和.fetch
:
{{#with items}}
{{#if this.length}}
<h1>Items</h1>
{{#each this}}
{{> item}}
{{/each}}
{{/if}}
{{/with}}
Template.foo.helpers
items: ->
Items.find
bar: true
,
sort: created: -1
transform: (item) ->
i.good = true
i
.fetch()
答案 3 :(得分:0)
你可以使用空格键做你想做的事情。 #with
阻止标记。
像这样:
{{#with items}}
{{#if this.count}}<h1>Items</h1>{{/if}}
{{#each this}}
{{> item}}
{{/each}}
{{/with}}
块标记为documented here。相关的引用是:
如果#with的参数是假的(与#if的规则相同),则不会呈现内容。
更新:修复所需行为的代码。另外,虽然我的示例演示了一个帮助调用,但更好的做法是制作一个&#39; itemList&#39;模板并使用{{&gt; itemList items}}。
答案 4 :(得分:0)
我发现只需{{#if items.count}}
即可。
{{#if items.count}}
<h2>Below there are items</h2>
{{/if}}
{{#each items}}
<div class="item-name">{{this.name}}</div>
{{else}}
<h2>There are no items</h2>
{{else}}