2012-04-28 17 views
19

¿Hay alguna manera mejor de poblar los campos de selección basados ​​en Jade, actualmente estoy usando este ejemplo. ¿Hay alguna forma mejor de no arruinar el código de la plantilla?Jade select field populating data

el valor del artículo es el "día" de ejemplo.

select 
     repeation = [ 'no-repeat', 'day', 'week', 'month'] 
     for item in repeation 
     if job.repeat == item 
      option(selected="true") #{item} 
     else 
      option #{item} 

También lo que sobre la visualización de múltiples selecciones, cuando el artículo es matriz de [ 'día', 'semanas']?

// Editar pequeña solución posible para elementos múltiples

 enginges = [ 'google', 'bing', 'yahoo', 'duckduckgo'] 
     for engine in enginges 
     option(selected=job.sources.indexOf(engine) != -1) #{engine} 

Respuesta

35

Usted debe ser capaz de hacer algo como:

for item in repeation 
    option(selected=job.repeat == item) #{item} 

El mismo concepto debe ser capaz de ser aplicada a un elemento de selección múltiple desplegable.

+1

Ty esto funciona bien, puedo editar mi post para añadir la selección múltiple también. –

+0

muy buen truco! – Charles

+2

Es solo javascript. El "job.repeat == item" devuelve verdadero o falso. El mismo concepto se puede aplicar al devolver valores de funciones, puede simplemente devolver la expresión directamente. – AntelopeSalad

2

Un par de cosas que añadir a la respuesta (https://stackoverflow.com/a/10368381/870274):

  1. "cada uno" es más comúnmente utilizado ahora en lugar de "para"

  2. no se olvide el "-" para la línea: repeation = ['no-repeat', 'day', 'week', 'month'], o obtendrá un error de compilación. Así que la final resultado sería (mismos que los suyos):

    select 
        - repeation = [ 'no-repeat', 'day', 'week', 'month'] 
        each item in repeation 
        option(selected=job.repeat == item) #{item} 
    
+1

En lugar de "arriba/abajo", consulte otras publicaciones por algo que no sea posicional. El nombre del autor, o un enlace a la publicación, dicen. En este momento, solo la pregunta está por encima de tu respuesta. – Mogsdad