44

Mustacheを使用して次のロジックを実装したいと思います。

{{#if users.length > 0}}
    <ul>
        {{#users}}
            <li>{{.}}</li>
        {{/users}}
    </ul>
{{/if}}

// eg. data = { users: ['Tom', 'Jerry'] }

usersニーズに合わせて構造を変更する必要がありますか?例えば:

{{#hasUsers}}
    <ul>
        {{#users}}
            <li>{{.}}</li>
        {{/users}}
    </ul>
{{/hasUsers}}

// eg. data = { hasUsers: true, users: ['Tom', 'Jerry'] }
4

3 に答える 3

78

申し訳ありませんが、これは手遅れかもしれません。しかし、私には同様の要件があり、これを行うためのより良い方法を見つけました:

{{#users.length}}
    <ul>
        {{#users}}
            <li>{{.}}</li>
        {{/users}}
    </ul>
{{/users.length}}
{{^users.length}}
    <p>No Users</p>
{{/users.length}}

ここでの作業サンプル:http://jsfiddle.net/eSvdb/

于 2013-07-27T11:14:51.233 に答える
39

{{#users.length}}を使用すると、配列のすべての要素に対して内部ステートメントを繰り返す場合に効果的ですが、ステートメントを1回だけ実行する場合は、次を使用できます。

{{#users.0}}
...
{{/users.0}}
{{^users.0}}
...
{{/users.0}}
于 2015-04-02T17:04:38.697 に答える
0

Pythonにシェブロンを使用しています。{{#users.length}}前の回答で説明したようには実装に依存し、Chevronでは機能しないため、リストが空でない場合にのみリストを含むオブジェクトをコードで返します。おそらく、この手法は他の言語でも機能するでしょう。

users = ["user1", "user2", "userN"]
user_obj = {"user_list": users} if len(users) > 0 else {}
template = """
{{#users}}
<ul>
    {{#user_list}}
    <li>{{.}}</li>
    {{/user_list}}
</ul>
{{/users}}
"""

chevron.render(template, {"users": user_obj})
于 2021-12-25T08:29:40.127 に答える