2011-12-19 15 views
6
- if (typeof(person) == 'undefined') 
    input(type="text", name="person[Name]") 
    - else 
    input(type="text", name="person[Name]", value="#{person.Name}") 

¿Hay alguna manera de escribir esto en línea? Tengo una opción de seleccionar y no quiero hacer una declaración condicional para más de 30 valores para seleccionar la opción correcta.Condición en línea en Jade

Gracias!

Respuesta

4

sentencia condicional debe hacer

input(type='text', name='person[Name]', value= (person?(person.name?person.name:''):'')) 

sin embargo, por diseño que siempre puede pasar a una ¿persona? de esta manera no se requiere comparación. El código sería algo así como

input(type='text', name='person[Name]', value= person.name) 
+0

Eso es, por supuesto, brillante. Pasar un objeto vacío para evitar errores "indefinidos", sin necesidad de mezclar o condicionales. Usé JavaScript para seleccionar la opción en la lista, ya que la declaración condicional no funcionaba. – Patrick

-1

Cuando el valor es undefined o null, no se mostrará el atributo. Esto debería funcionar:

input(type='text', name='person[Name]', value= person && typeof(person)) 
+0

Lamentablemente, Jade muestra un 500 ReferenceError si la persona no está definida. Si se define persona, dice "cadena" en lugar del valor en el cuadro de entrada. Entonces eso no funciona. – Patrick

6

usted podría utilizar mixins

mixin safeInput(person, property) 
    - if (typeof(person) == 'undefined') 
    input(type="text", name="person[#{property}]") 
    - else 
    input(type="text", name="person[#{property}]", value="#{person[property]}") 

Entonces

mixin safeInput(person, 'Name') 
mixin safeInput(person, 'Email') 
... 
+0

Hmm, no está mal. Tengo que ver si eso también funciona para seleccionar opciones. ¡Gracias! – Patrick

Cuestiones relacionadas