underscorejs:使用_each或替代

时间:2016-04-23 09:49:00

标签: list each underscore.js-templating

我想使用underscorejs呈现模板。

此代码

var _ = require('underscore');
var tpl = 'Hello <% _.each(names, function(name) { %><%= name %>, <% }); %>!';
var compiled = _.template(tpl);
var data = {
  names: ['Marissa','Bill','Larry','Steve']
};
var result = compiled(data);

产生

=> "Hello Marissa, Bill, Larry, Steve, !"

嗯,结果看起来并不聪明。

我需要请求name不是最后一项,然后输出&#34;,&#34;,所以我可以得到结果:

"Hello Marissa, Bill, Larry, Steve!"

如果我可以查询姓名是否是前一个名字,我可以访问:

"Hello Marissa, Bill, Larry and Steve!"

我怎样才能得到这个结果?

1 个答案:

答案 0 :(得分:0)

我解决了它:

 Hello <% var n=names.length-1; _.each(names, function(name,i) { %><%= name %><% if(i<n) %>, <% }); %>!

结果

=> "Hello Marissa, Bill, Larry, Steve!"

Hello <% var n=names.length-2; _.each(names, function(name,i) { %><%= name %><% if(i<n) %>, <% if(i==n) %> and <% }); %>!

结果

=> "Hello Marissa, Bill, Larry and Steve!"