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>

itemsMeteor.cursorはどこにありますか:

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

ただし、上記のコードは機能しません。これは、アイテムがない場合でも条件付きが肯定的に評価されるためです(ハンドルバーは偽と評価されるため、これは少し驚くべきこと[]です)。条件をに変えてみました

{{#if items.count}}

しかし、それから私は不可解なエラーを受け取ります

Unknown helper 'items'

それで、流星ハンドルバーテンプレート内にそのような条件を書く方法はありますか?

4

3 に答える 3

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をご覧ください。

(Meteorはハンドルバーに触発されたスペースバーを使用しています。したがって、構文はほとんど同じです。)

于 2013-06-12T18:42:36.460 に答える
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}}

于 2012-06-14T22:48:32.013 に答える
5

私は過去数週間ハンドルバーを評価してきましたが、同様の問題がありました。私にとってうまくいったのは、lengthプロパティを読み取り、elseタグを追加することでした。

    {{#if competitions.length}}
        <div class="game-score span-4"> 
        ...code goes here...    
        </div>
   {{else}}
        {{> allGameNotes}}
   {{/if}
于 2012-06-14T21:13:54.663 に答える