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

Có cách nào để viết nội tuyến này không? Tôi có một tùy chọn chọn và tôi không muốn thực hiện một câu lệnh có điều kiện cho hơn 30 giá trị để chọn tùy chọn phù hợp.Điều kiện nội tuyến trong Jade

Cảm ơn!

Trả lời

4

tuyên bố có điều kiện nên làm

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

Tuy nhiên, do thiết kế, chúng tôi luôn có thể vượt qua một người? theo cách này, không cần so sánh. Mã sẽ giống như

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

Đó là tất nhiên rực rỡ. Vượt qua một đối tượng trống để ngăn chặn các lỗi "không xác định", không cần trộn hoặc điều kiện. Tôi đã sử dụng JavaScript để chọn tùy chọn trong danh sách, vì câu lệnh có điều kiện không hoạt động. – Patrick

-1

Khi giá trị là undefined hoặc null, thuộc tính sẽ không được hiển thị. Điều này sẽ làm việc:

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

Thật không may, Jade hiển thị 500 lỗi tham chiếu nếu người đó không được xác định. Nếu người được xác định, nó nói "chuỗi" thay vì giá trị trong hộp nhập liệu. Vì vậy, điều đó không hoạt động. – Patrick

6

Bạn có thể sử dụng 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]}") 

Sau đó

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

Hmm, không tệ. Tôi phải xem liệu điều đó có hiệu quả đối với lựa chọn của tùy chọn hay không. Cảm ơn! – Patrick