车把.js循环中的助手 #each 返回相同的结果

Handlebars.js helper in #each loop returns same results?

本文关键字:返回 结果 #each js 循环 车把      更新时间:2023-09-26

我正在尝试使用 #each 循环中车把注册的momentjs助手来格式化我的日期。注册的帮助程序如下所示:

   Handlebars.registerHelper('dateFormat', function(context( {      if (window.moment( {        return moment(Date(context((.format("MMM Do, YYYY"(;      }else{        返回上下文;      };    });

车把环看起来像这样

{

{#each controller}}
{{{身体}}}
{{{日期格式日期}}}
{{/每个}}

正在循环的 JSON 在此

    {       "想法":[          {             "_id":"548eeebeda11ffbe12000002",             "身体":"牛",             "标签":"牛",             "日期":"2014-12-15T14:22:54.088Z"          },          {             "_id":"548eeec2da11ffbe12000003",             "身体":"牛",             "标签":"驼鹿",             "日期":"2014-10-15T14:22:58.947Z"          }       ]    }

所以我遇到的问题是它循环得很好,只是没有正确评估帮助程序。

我得到的结果看起来像这样

cow 15 12月 2014
cow 15 12月 2014
日期总是相同的。

它应该看起来像这样
cow 15 12月 2014
牛 15 10月 2014

我使用它.get('date'(;

   Handlebars.registerHelper('dateFormat', function(context( {          if (window.moment( {            return moment(this.get('date'((.format("MMM Do, YYYY"(;          }else{            返回上下文;          };        });

最初的问题是你没有在循环的每次迭代中实例化一个新的日期。

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)