2012-04-28 11 views
19

Czy istnieją lepsze sposoby wypełniania pól wyboru opartych na Jade, obecnie używam tego przykładu. Czy są jakieś lepsze sposoby, aby nie zepsuć kodu szablonu?Jade wybierz dane wypełniające pola

wartość pozycji to przykład "dzień".

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

Co się dzieje z wyświetlaniem wielu zaznaczeń, gdy pozycją jest tablica ["dzień", "tydzień"]?

// Edit mały możliwym rozwiązaniem dla wielu elementów

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

Odpowiedz

35

Powinieneś być w stanie zrobić coś takiego:

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

Ta sama koncepcja powinna być w stanie zastosować się do wielokrotnego wyboru pozycji upuścić.

+1

Ty to działa dobrze, mogę edytować mój post, aby dodać wielokrotnego wyboru również. –

+0

bardzo ładna sztuczka! – Charles

+2

To tylko javascript. "Job.repeat == item" zwraca prawdę lub fałsz. Ta sama koncepcja może być zastosowana podczas zwracania wartości z funkcji, możesz po prostu bezpośrednio zwrócić wyrażenie. – AntelopeSalad

2

Kilka rzeczy, aby dodać do odpowiedzi (https://stackoverflow.com/a/10368381/870274):

  1. "każdy" jest powszechnie używane teraz zamiast "za"

  2. nie zapomnieć "-" dla linii: repeatation = ['no-repeat', 'day', 'week', 'month'], albo otrzymasz błąd kompilacji. Tak więc końcowy wynik będzie (takie same):

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

Zamiast "powyżej/poniżej", odnieś się do innych postów za pomocą czegoś niepozycyjnego. Nazwa autora lub link do tego posta. W tej chwili tylko pytanie jest powyżej twojej odpowiedzi. – Mogsdad

Powiązane problemy