2012-07-25 12 views
26

Quiero poner en práctica la siguiente lógica con el bigote:Bigote - ¿Cómo detectar la matriz no está vacía?

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

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

¿Debo modificar la estructura users para satisfacer la necesidad? Por ejemplo:

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

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

Sí, yo creo que se va a tener que modificar los datos como que has hecho con ' hasUsers'. Otra opción es usar los [Manillares] más robustos (http://handlebarsjs.com/) que manejan este caso exacto en su página de inicio. – maxbeatty

Respuesta

44

Lo siento, esto puede ser demasiado tarde. Pero tenía requisito similar y se encontró una mejor manera de hacer esto: muestra

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

Trabajar aquí: http://jsfiddle.net/eSvdb/

+4

Sin embargo, tenga en cuenta que esta no es una función estándar de bigote. Varía según la implementación de Moustache. – corgrath

+0

Nunca demasiado tarde en SO :) – jClark

+0

Puedo confirmar, como dijo @corgrath, que esto depende de la implementación: no está funcionando con la biblioteca Java Mustache de samskivert. – penguin86

17

Uso {{}} # users.length funciona muy bien si desea que el comunicado interno para repetir cada elemento de la matriz, pero si sólo quiere una declaración única para funcionar vez, puede utilizar:

{{#users.0}} 
... 
{{/users.0}} 
{{^users.0}} 
... 
{{/users.0}} 
+5

de esta manera también funciona bien con php ya que las matrices no tienen propiedad de longitud. – JacopKane

+1

Para asegurarse de que funciona en bigote para PHP – Michael

+1

esta es la respuesta correcta – stewart715

Cuestiones relacionadas