Cyr*_* N. 5 javascript mustache
我正在尝试使用Mustache显示一系列项目,我想用逗号分隔符显示它们.
这是我的对象:
{"items": [
{"display": "Item 1"},
{"display": "Item 2"},
{"display": "Item 3"},
{"display": "Item 4"}
]}
Run Code Online (Sandbox Code Playgroud)
这是我的Mustache JS模板:
{{#items}}{{display}}, {{/items}}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这将呈现为:
Item 1, Item 2, Item 3, Item 4,
Run Code Online (Sandbox Code Playgroud)
我想删除最后一个",",因为它看起来很奇怪.
我尝试了函数,但是我得到了"{{items}}"文本,而不是数组items.
我能怎么做 ?
谢谢你的帮助!
您可以使用Mustache函数.这些在您的模板中像任何其他部分一样定义,然后在它们被包裹的内容上运行.对于你的情况,它看起来像这样:
{
"items": [
{"display": "Item 1"},
{"display": "Item 2"},
{"display": "Item 3"},
{"display": "Item 4"}
],
"trim": function () {
return function (text, render) {
return render(text).replace(/(,\s*$)/g, ''); // trim trailing comma and whitespace
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么你的Mustache标记将如下所示:
{{#trim}}{{#items}}{{display}}, {{/items}}{{/trim}}
Run Code Online (Sandbox Code Playgroud)
你的输出将是你所追求的:
Item 1, Item 2, Item 3, Item 4
Run Code Online (Sandbox Code Playgroud)
我知道解决这个问题的两种方法,第一种是编写自己的迭代器助手(这是最好的解决方案),第二种是手动删除(使用 DOM 处理)尾随的逗号。
只需使用 JavaScript ( ) 找到文本$("selector").html(),然后对其进行切片即可。
var html = jQuery("selector").html();
html = html.slice(0, html.length-1);
Run Code Online (Sandbox Code Playgroud)
这样你就可以剪切最后一个字符。