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

有没有什么办法可以写这个内联?我有一个选项选择,我不想为30+个值做一个条件语句来选择正确的选项。Jade内联条件

谢谢!

回答

4

条件语句应该做

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

然而,通过设计,我们总是可以传递人?这种方式不需要进行比较。代码会像

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

这当然是辉煌的。传递空对象以防止“未定义”错误,不需要混合或条件。我使用JavaScript来选择列表中的选项,因为条件语句不起作用。 – Patrick 2011-12-21 13:33:16

-1

当值为undefinednull时,该属性将不会显示。这应该工作:

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

不幸的是,如果没有定义人,Jade会显示一个500 ReferenceError。如果定义了人员,则表示“字符串”而不是输入框中的值。所以这是行不通的。 – Patrick 2011-12-20 08:40:28

6

你可以使用混入

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

然后

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

嗯,不错。我必须看看它是否适用于选项选择。谢谢! – Patrick 2011-12-20 18:37:37