检查模板助手返回的光标是否为空的最快方法?
Fastest way to check whether the cursor returned by a template helper is empty?
我经常做这样的事情,两次使用 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
您可以使用空格键的 #with
块标记来做您想做的事。
像这样:
{{#with items}}
{{#if this.count}}<h1>Items</h1>{{/if}}
{{#each this}}
{{> item}}
{{/each}}
{{/with}}
区块标签是documented here。相关报价是:
If the argument to #with is falsy (by the same rules as for #if), the content is not rendered.
更新:修复了所需行为的代码。此外,虽然我的示例演示了调用一个帮助程序,但更好的做法是制作一个 'itemList' 模板并使用 {{> itemList items}} 包含它。
您可以使用{{else}}
{{#each this}}
{{> item}}
{{else}}
<h1>No Items</h1>
{{/each}}
使用#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()
在模板中,您可以使用 {{#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}}
我发现 {{#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}}
我经常做这样的事情,两次使用 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
您可以使用空格键的 #with
块标记来做您想做的事。
像这样:
{{#with items}}
{{#if this.count}}<h1>Items</h1>{{/if}}
{{#each this}}
{{> item}}
{{/each}}
{{/with}}
区块标签是documented here。相关报价是:
If the argument to #with is falsy (by the same rules as for #if), the content is not rendered.
更新:修复了所需行为的代码。此外,虽然我的示例演示了调用一个帮助程序,但更好的做法是制作一个 'itemList' 模板并使用 {{> itemList items}} 包含它。
您可以使用{{else}}
{{#each this}}
{{> item}}
{{else}}
<h1>No Items</h1>
{{/each}}
使用#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()
在模板中,您可以使用 {{#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}}
我发现 {{#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}}