[英]Handlebars.js helper in #each loop returns same results?
我正在尝试在#each循环中使用车把注册的momentjs助手格式化日期。 注册的帮助程序如下所示:
Handlebars.registerHelper('dateFormat', function(context) { if (window.moment) { return moment(Date(context)).format("MMM Do, YYYY"); }else{ return context; }; });
车把循环看起来像这样
{{#每个控制器}}
{{{身体}}}
{{{dateFormat date}}}
{{/每}}
正在循环的JSON在此
{ "idea":[ { "_id":"548eeebeda11ffbe12000002", "body":"cow", "tag":"cow", "date":"2014-12-15T14:22:54.088Z" }, { "_id":"548eeec2da11ffbe12000003", "body":"cow", "tag":"moose", "date":"2014-10-15T14:22:58.947Z" } ] }
因此,我遇到的问题是它循环得很好,只是无法正确评估助手。
我得到的结果看起来像这样
cow 2014年12月15日
cow 2014年12月15日
日期总是相同的。
它应该看起来像这样
cow 2014年12月15日
牛2014年10月15日
我使用this.get('date');
Handlebars.registerHelper('dateFormat', function(context) { if (window.moment) { return moment(this.get('date')).format("MMM Do, YYYY"); }else{ return context; }; });
最初的问题是您没有在循环的每次迭代中实例化新的Date。
Handlebars.registerHelper('dateFormat', function(context) {
if (window.moment) {
// new Date() !, calling Date("anything") returns current date
return moment(new Date(context)).format("MMM Do, YYYY");
}else{
return context;
};
});
两个日期均返回了预期结果:
new Date("2014-10-15T14:22:58.947Z")
> Wed Oct 15 2014 09:22:58 GMT-0500 (CDT)
new Date("2014-12-15T14:22:54.088Z")
> Mon Dec 15 2014 08:22:54 GMT-0600 (CST)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.