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

このインラインを書く方法はありますか?私はオプションを選択しており、正しいオプションを選択するために30 +値の条件文を実行したくありません。玉のインライン状態

ありがとうございます!

答えて

4

条件文が、しかし

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

を行う必要があり、設計によって、我々は常に渡すことができますミックスイン

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

を使用することができます人?このようにして比較は必要ありません。コードは次のようなものになります

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

それはもちろん華麗です。空のオブジェクトを渡して「未定義」エラーを防止し、ミキシングや条件付きの必要はありません。条件文が機能しなかったので、JavaScriptを使用してリスト内のオプションを選択しました。 – Patrick

-1

値がundefinedまたはnullの場合、属性は表示されません。これは動作するはずです:

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

残念ながら、人が定義されていない場合、Jadeは500 ReferenceErrorを表示します。人が定義されている場合は、入力ボックスの値の代わりに「文字列」と表示されます。それはうまくいきません。 – Patrick

6

をあなたは次に

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

うーん、悪くない。私はそれがオプション選択のためにも機能するかどうかを見なければならない。ありがとう! – Patrick