2012-04-28 36 views
19

Có cách nào tốt hơn để điền vào các trường chọn dựa trên Jade, tôi hiện đang sử dụng ví dụ này. Có cách nào tốt hơn để không làm hỏng mã mẫu không?Jade chọn trường điền dữ liệu

giá trị mặt hàng là ví dụ 'ngày'.

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

Ngoài ra còn hiển thị nhiều lựa chọn, khi mục là mảng ['ngày', 'tuần']?

// Sửa giải pháp khả thi nhỏ cho nhiều yếu tố

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

Trả lời

35

Bạn sẽ có thể làm điều gì đó như:

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

Khái niệm tương tự có thể được áp dụng cho một mục nhiều chọn thả xuống.

+1

Ty làm việc này tốt, tôi chỉnh sửa bài viết của tôi để thêm lựa chọn nhiều cũng có. –

+0

mẹo rất hay! – Charles

+2

Nó chỉ là javascript. "Job.repeat == item" trả về true hoặc false. Cùng một khái niệm có thể được áp dụng khi trả về các giá trị từ các hàm, bạn chỉ có thể trả lại trực tiếp biểu thức. – AntelopeSalad

2

Một vài điều để thêm vào câu trả lời (https://stackoverflow.com/a/10368381/870274):

  1. "mỗi" thường được sử dụng hiện nay thay vì "cho"

  2. không quên "-" cho dòng: repeation = ['no-repeat', 'day', 'week', 'month'], hoặc bạn sẽ gặp lỗi biên dịch. Vì vậy, trận chung kết kết quả sẽ là (giống như bạn):

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

Thay vì "ở trên/dưới", hãy tham khảo các bài đăng khác bằng một thứ không có vị trí. Tên tác giả hoặc liên kết tới bài đăng, nói. Ngay bây giờ, chỉ có câu hỏi ở trên câu trả lời của bạn. – Mogsdad

Các vấn đề liên quan