Mustache/jQuery/javascript - 如何对mustache变量执行方法?

tud*_*ddy 6 javascript jquery mustache

我有一个简单的胡子模板设置,它接受一个对象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);
Run Code Online (Sandbox Code Playgroud)

我想做的是:

{{ position.toUpperCase() }}
Run Code Online (Sandbox Code Playgroud)

我宁愿不改变对象本身,因为我可能希望{{position}}在其他情况下不是大写.有关最干净最聪明的方法的任何提示吗?

非常感谢.

mu *_*ort 6

Mustache故意非常简单("无逻辑模板"),因此您无法做很多事情.一种选择是添加positionUC属性:

player.positionUC = player.position.toUpperCase();
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

{{positionUC}}
Run Code Online (Sandbox Code Playgroud)

您还可以添加功能:

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

然后在模板中:

{{#uc}}{{position}}{{/uc}}
Run Code Online (Sandbox Code Playgroud)

也许你可以切换到Handlebars并为大写字母添加帮助器.