2010-12-31 11 views
7

Il nuovo plug-in di template jQuery supporta l'operatore condizionale (ternario)? Per stampare un valore semplice in base a una condizione, {{if}}/{{else}} è l'unica opzione?Operatore condizionale in modello jQuery

Sono interessato a qualcosa di simile a <?=($reviewed ? 'ham' : 'spam')?>

risposta

16

Sì, è possibile inserire funzioni arbitrarie e le espressioni all'interno del tag ${} modello:

Valuta il campo specificato (proprietà) sulla voce dati attuali , o la funzione JavaScript specificata o espressione.

${reviewed ? 'ham' : 'spam'} 

Quindi, si potrebbe scrivere un modello come questo:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
    <!-- Ternary operator to assign a class --> 
    <li class="${Year >= 1990 ? 'orange' : 'yellow'}"> 
     Title: ${Name}. 
     {{each Languages}} 
      ${$index + 1}: <em>${$value}. </em> 
     {{/each}} 
    </li> 
</script> 

JavaScript e JSON dati indicati come questo:

var movies = [ 
{ 
    Name: "Meet Joe Black", 
    Languages: ["French"], 
    Year: 1990 
}, 
{ 
    Name: "The Mighty", 
    Languages: [], 
    Year: 1985 
}, 
{ 
    Name: "City Hunter", 
    Languages: ["Mandarin", "Cantonese"], 
    Year: 1994 
}]; 

$("#movieTemplate").tmpl(movies).appendTo("#movieList"); 

Questo si applica una classe di 'arancione' a film con anni maggiori o uguali al 1990 e una classe di "gialli" per film con anni precedenti al 1990.

Esempio di lavoro qui: http://jsfiddle.net/andrewwhitaker/dY43s/

+0

Grazie Andrew. –

Problemi correlati