2016-04-23 36 views
0

我想使用underscorejs来渲染模板。underscorejs:使用_each或其他替代方法进行智能列表渲染

此代码

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不是最后一个项目,然后输出“”这样我就可以得到结果:

"Hello Marissa, Bill, Larry, Steve!" 

如果如果名称是最后一个前一个我可以查询,我可以得到:

"Hello Marissa, Bill, Larry and Steve!" 

我该如何得到这个结果?

回答

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!" 
相关问题