web-dev-qa-db-ja.com

Mustacheを使用してリストの最初のアイテムのみを表示する

口ひげテンプレートエンジンを使用していますが、長いリストの最初のアイテムのみを表示したいのですが、そのためのドキュメントが見つからないようです。

私が使用する場合:

{{# links}}<a href="{{& url}}">{{& title }}</a>{{/ links}}

すべてのリンクを取得しましたが、最初のリンクのみを表示したいので、簡単に聞こえますが、これに関するドキュメントが見つかりません。

22
Alex

このソリューションは、Mustache.jsの新しいバージョンで動作しています(のみ):

mustache.render("{{a.0}}", {a: ['hi','world']})
=> 'hi'
41
Millad

@Milladが提示したソリューションは、ほとんど私にとってはうまくいきました。ブラケットを使用する必要がありましたが、handlebars.jsを使用しました。

{{ a.[0] }}

=>こんにちは

res.render('view', { a: ['hello', 'world'] })
3
arcs

口ひげには論理がありません、 docs から:

Ifステートメント、else節、またはforループがないため、これを「ロジックレス」と呼びます。代わりに、タグのみがあります。一部のタグは値に置き換えられ、一部は何も置き換えられず、その他は一連の値に置き換えられます。このドキュメントでは、さまざまなタイプのMustacheタグについて説明します。

したがって、本質的に必要なのは、if link is the firstを実行するメカニズムです。これにより、データに1つの要素を配置するか、データのチャンクを追加することで、データ側でこれを処理できます。データはdisplayのような値を追加し、それを「インライン」または「なし」に設定してから、テンプレートで次のようにします。

{{# links}}<a href="{{& url}}" style="display: {{display}};">{{& title }}</a>{{/ links}}

その後、ページ内のスクリプトを呼び出して、ユーザーまたはアプリケーションのアクションでstyle.displayを変更できます。

この特定のテンプレートにdata = data[0]を設定する方が簡単かもしれませんが、これらは私の最初のものです。問題は、おそらくある時点でそのリスト全体を使用して、使用状況とデータの入力元を確認する必要があることについてコメントしたいということです。

2
artlung