Усы/jQuery/javascript - как выполнить метод для переменной усов?

У меня есть простая настройка шаблона усов, которая берет объект player и создает элемент списка. Как лучше всего выполнить метод javascript для переменной в усах? Вот пример кода:

var playerTemplate = '<li><span class="player-position">{{ position }}</span><span class="player-name">{{ first_name }} {{ last_name }}</span></li>';
var playerRow = Mustache.to_html(playerTemplate, player);
$('ul#players-list').append(playerRow);

то, что я хотел бы сделать, это что-то вроде:

{{ position.toUpperCase() }}

Я бы предпочел не менять сам объект, потому что я могу захотеть, чтобы {{ position }} не было в верхнем регистре в других ситуациях. Любые советы о самом чистом умном способе сделать это?

Спасибо большое.


person tuddy    schedule 10.12.2011    source источник


Ответы (1)


Усы намеренно очень просты («Шаблоны без логики»), поэтому вы мало что можете сделать. Один из вариантов — добавить свойство positionUC:

player.positionUC = player.position.toUpperCase();

а затем в шаблоне:

{{positionUC}}

Вы также можете добавить функции:

// Note that render(text) will be HTML though...
player.uc = function(text, render) { return render(text).toUpperCase() };

а затем в шаблоне:

{{#uc}}{{position}}{{/uc}}

Возможно, вы могли бы переключиться на Handlebars и добавить помощника для заглавных букв.

person mu is too short    schedule 10.12.2011
comment
О да, это хороший момент насчет отсутствия логики. Добавление positionUC было быстрым и простым. пошел с этим, спасибо! - person tuddy; 11.12.2011