1. ホーム
  2. mustache

[解決済み] Mustacheのテンプレートで、末尾のカンマなしでカンマ区切りリストを表現するエレガントな方法はありますか?

2023-01-30 13:03:47

質問

私は Mustache テンプレートライブラリ を使っていて、末尾のカンマを除いたカンマ区切りリストを生成しようとしています。

赤、緑、青

末尾にカンマがあるリストを作成するのは簡単で、次のような構造になっています。

{
  "items": [
    {"name": "red"},
    {"name": "green"},
    {"name": "blue"}
  ]
}

とテンプレート

{{#items}}{{name}}, {{/items}}

に解決されます。

赤、緑、青

しかし、末尾のコンマなしでこのケースを表現するエレガントな方法を見つけることができません。私はいつでも、テンプレートに渡す前にコードでリストを生成することができますが、テンプレート内のリストの最後の項目であるかどうかを検出できるようにするなど、ライブラリが別のアプローチを提供しているかどうか疑問に思っていました。

どのように解決するのですか?

うーん、怪しいな、その 口ひげデモ を使えば、ほとんどわかると思います。 first プロパティを使用すると、JSON データ内部にロジックを作成して、カンマを置くタイミングを判断する必要があることがよくわかります。

つまり、あなたのデータは次のようになります。

{
  "items": [
    {"name": "red", "comma": true},
    {"name": "green", "comma": true},
    {"name": "blue"}
  ]
}

そして、あなたのテンプレート

{{#items}}
    {{name}}{{#comma}},{{/comma}}
{{/items}}

エレガントでないことは承知していますが は他の人が言っているように Mustache は非常に軽量であり、そのような機能は提供されません。