2012-06-14 53 views
14

我想要做這樣的事情:如何根據集合的大小製作模板條件?

<template name="list"> 
    <ul> 
    {{#if items}} 
     {{#each items}} 
     <li>{{itemContents}}</li> 
     {{/each}} 
    {{else}} 
    <li class="placeholder">There are no items in this list.</li> 
    {{/if}} 
    <ul> 
</template> 

其中items是Meteor.cursor:

Template.list.items = function() { 
    return Items.find(); 
}; 

然而,上面的代碼不工作,作爲條件將積極即使評估沒有物品(這是輕微的驚喜,因爲把手評估爲[]爲假)。我試圖改變的條件

{{#if items.count}} 

但後來我得到神祕的錯誤

Unknown helper 'items' 

那麼,有沒有寫流星把手模板內這樣的條件呢?

回答

32

這將是要走的正確方法:

<template name="list"> 
    <ul> 
    {{#each items}} 
    <li>{{itemContents}}</li> 
    {{else}} 
    <li class="placeholder">There are no items in this list.</li> 
    {{/each}} 
    <ul> 
</template> 

欲瞭解更多信息,看看handlebarsjs.com

(流星使用Spacebars這是由把手的啓發。所以,語法幾乎是相同的。)

+0

如果他宣稱這樣的項目不應該是OP的代碼工作: 'Template.list.helpers({\ item}:function(){ return Items.find () } };' – rdk1992

+0

我不這麼認爲,他遇到的問題是'[]!== false' – HaNdTriX

5

我過去幾週一直在評估Handlebars,我也遇到過類似的問題。對我來說有效的是讀取length屬性並添加else標籤。

{{#if competitions.length}} 
     <div class="game-score span-4"> 
     ...code goes here...  
     </div> 
    {{else}} 
     {{> allGameNotes}} 
    {{/if} 
+0

這並不爲我工作。當我嘗試使用'count'時,我得到與我一樣的錯誤。在這種情況下,這將是'未知的幫手'比賽'。' –

10

我能得到我的模板使用with改變評估方面的工作:

<template name="list"> 
    <ul> 
    {{#with items}} 
    {{#if count}} 
     {{#each this}} 
      <li>{{itemContents}}</li> 
     {{/each}} 
    {{else}} 
     <li class="placeholder">There are no items in this list.</li> 
    {{/if}} 
    {{/with}} 
    <ul> 
</template> 

公告修改後的表情{{#if count}}{{#each this}}

相關問題