underscore js:更智能的列表渲染与每个或替代
Posted
技术标签:
【中文标题】underscore js:更智能的列表渲染与每个或替代【英文标题】:underscorejs: smarter list rendering with _each or an alternative 【发布时间】:2016-08-16 23:47:31 【问题描述】:我想使用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
不是最后一项,我需要请求,然后输出“,”,这样我就可以得到结果:
"Hello Marissa, Bill, Larry, Steve!"
如果我可以查询名字是否是最后一个之前的名字,我可以得到:
"Hello Marissa, Bill, Larry and Steve!"
我怎样才能得到这个结果?
【问题讨论】:
【参考方案1】:我解决了:
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!"
【讨论】:
以上是关于underscore js:更智能的列表渲染与每个或替代的主要内容,如果未能解决你的问题,请参考以下文章
Underscore.js:使用在对象中找到的键从对象列表中创建映射