繁体   English   中英

#each循环中的Handlebars.js帮助程序会返回相同的结果吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM