1

ハンドルバーとノードを使用すると、長さが変化する配列があり、変化するたびに最後の要素の前に常に 1 つ取得する必要があります。

したがって、最後の要素を取得したい場合は、次のようにします。

{{#each array}}
  {{#if @last}}
    {{this}}
  {{/if}}
{{/each}}

最後の要素が返されます。基本的な数学演算を実行できる数学ヘルパーがあります。たとえば、必要なインデックス番号を取得できます

{{math array.length '-' 1}}

ただし、別のブロックヘルパーでは使用できません。たとえば、次のようになります。

{{#each array}}
  {{#if math @last '-' 1}}
    {{this}}
  {{/if}}
{{/each}}

これはどのように行うことができますか?ありがとうございました。

4

2 に答える 2

2

まず、ブロック ヘルパーmathの口ひげの中でヘルパーを使用できないと述べています。本当じゃない。Handlebars は部分式をサポートしています。#if{{#if math @last '-' 1}}

Handlebars は部分式のサポートを提供します。これにより、1 つの口ひげ内で複数のヘルパーを呼び出し、内部ヘルパー呼び出しの結果を引数として外部ヘルパーに渡すことができます。部分式は括弧で区切られます。

ただし、{{#if (math @last '-' 1)}}はブール値であるため、あまり意味がありません。またはから@last減算するという奇妙さに注意することをお勧めします。1truefalse

#each問題が配列から単一の要素をレンダリングすることである場合 (たとえば、最後から 2 番目の要素)、なぜarray. 組み込みのlookupヘルパーを既存のmathヘルパーと組み合わせるだけで、テンプレートが非常にシンプルになります。

{{lookup array (math array.length '-' 2)}}

注: JavaScript 配列のインデックスは 0 であることに注意してください。したがって2、最後の要素から秒を取得するには減算する必要があります。

参照用に簡単なフィドルを作成しました。

于 2017-10-25T02:20:35.713 に答える