0

mustache.js はそのような表現をサポートするかどうか? -> {{type == "a"}}

私はどのように行いますか?

口ひげ:</p>

{{#items}}
  {{type == "a"}} 
    <li>{{name}} {{type}}</li>
  {{/link}}
  {{type == "b"}} 
    <strong>{{name}} {{type}}</strong>
  {{type == "c"}} 
    <span>{{name}} {{type}}</span>
  {{/link}}
{{/items}}

JSON:</p>

{
  "header": "Colors",
  "items": [
      {"name": "red", "type": "a", "url": "#Red"},
      {"name": "green", "type": "b", "url": "#Green"},
      {"name": "blue", "type": "c", "url": "#Blue"}
  ],
  "empty": false
}

出力:

<li>red a</li>
<strong>green b</strong>
<span>blue c</span>
4

1 に答える 1

0

Mustache はロジックがないため、できません。

ベスト プラクティスは、「ロジック」が既に入力に含まれるように入力 JSON を変更することです。何かのようなもの:

{
  "header": "Colors",
  "items": [
      {"a": {"name": "red", "url": "#Red"}},
      {"b": {"name": "green", "url": "#Green"}},
      {"c": {"name": "blue", "url": "#Blue"}}
  ],
  "empty": false
}

それで:

{{#items}}
  {{#a}}
    <li>{{name}} {{type}}</li>
  {{/a}}
  {{#b}}
    <strong>{{name}} {{type}}</strong>
  {{/b}}
  {{#c}}
    <span>{{name}} {{type}}</span>
  {{/c}}
{{/items}}

あなたが望むものを生み出すでしょう。

EDIT どういうわけか、上記の例を機能させることができませんでした。私は Hogan を使用しています (Twitter が管理している口ひげのバージョンで、より高速であり、それを使用してできることがいくつかあります。必ずチェックしてください)。上記のものはうまくいくはずです。

とにかく、提供されたデモページで次のように動作させることができました。これは元の例に近く、必要な出力を実現します。一般的な注意: フィールドの存在を確認することはできますが (例: を使用{{#isa}})、タグに他のロジックを含めることはできません。

{{#items}}
  {{#isa}}
   <li><strong>{{name}}</strong></li>
  {{/isa}}
  {{#isb}}
   <li><a href="{{url}}">{{name}}</a></li>
  {{/isb}}
  {{#isc}}
    <li><span href="{{url}}">{{name}}</span ></li>
  {{/isc}}
{{/items}}

JSON

{
  "header": "Colors",
  "items": [
      {"name": "red", "isa": true, "url": "#Red"},
      {"name": "green", "isb": true, "url": "#Green"},
      {"name": "blue", "isc": true, "url": "#Blue"}
  ],
  "empty": false
}

h番目

于 2012-06-12T16:54:56.827 に答える