小胡子 - 如何检测数组不是空的?

Tra*_*Liu 37 arrays logic mustache

我想用Mustache实现以下逻辑:

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

// eg. data = { users: ['Tom', 'Jerry'] }
Run Code Online (Sandbox Code Playgroud)

我应该修改users结构以满足需要吗?例如:

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

// eg. data = { hasUsers: true, users: ['Tom', 'Jerry'] }
Run Code Online (Sandbox Code Playgroud)

小智 66

对不起,这可能为时已晚.但我有类似的要求,并找到了更好的方法:

{{#users.length}}
    <ul>
        {{#users}}
            <li>{{.}}</li>
        {{/users}}
    </ul>
{{/users.length}}
{{^users.length}}
    <p>No Users</p>
{{/users.length}}
Run Code Online (Sandbox Code Playgroud)

这里的工作示例:http://jsfiddle.net/eSvdb/

  • 请注意,这不是标准的胡须功能.它取决于Mustache的实现. (5认同)
  • 尝试使用 Java 实现“{{#users.size}}”。 (3认同)
  • 从来没有太晚了:) (2认同)

tho*_*iha 29

如果你希望内部语句为数组的每个元素重复,那么使用{{#users.length}}会很有效,但是如果你只想让一个语句只运行一次,你可以使用:

{{#users.0}}
...
{{/users.0}}
{{^users.0}}
...
{{/users.0}}
Run Code Online (Sandbox Code Playgroud)

  • 这种方式也适用于PHP,因为数组没有长度属性. (7认同)
  • 有用!但它没有记录在官方的胡子文档中。 (2认同)