2010-12-31 4 views
7

Поддерживает ли новый плагин шаблона jQuery условный (тройной) оператор? Для печати простого значения в зависимости от условия есть {{if}}/{{else}} единственный вариант?Условный оператор в шаблоне jQuery

Я заинтересован в нечто похожее на <?=($reviewed ? 'ham' : 'spam')?>

ответ

16

Да, вы можете поместить произвольные функции и выражение внутри ${} тег шаблона:

Оценивает указанное поле (свойства) текущий элемент данных , или указанная функция JavaScript или выражение.

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

Таким образом, вы могли бы написать шаблон:

<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 и JSON данные, как это:

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"); 

Это относится к классу 'оранжевых' на фильмы с годами, большими или равными 1990 году, и класс «желтых» фильмов с годами меньше 1990 года.

Рабочий пример: http://jsfiddle.net/andrewwhitaker/dY43s/

+0

Спасибо Эндрю. –

Смежные вопросы