0

#each ループ内でハンドルバーに登録された momentjs ヘルパーを使用して、日付をフォーマットしようとしています。登録されたヘルパーは次のようになります。

    Handlebars.registerHelper('dateFormat', function(context) {
      if (window.moment) {

        return moment(Date(context)).format("MMM Do, YYYY");
      }そうしないと{
        コンテキストを返します。
      };
    });

ハンドルループはこんな感じ

{{#各コントローラ}}
{{{本体}}}
{{{dateFormat 日付}}}
{{/each}}

ループされているJSONはこれにあります

    {
       "考え":[
          {
             "_id":"548eeebeda11ffbe12000002",
             "体":"牛",
             "タグ":"牛",
             "日付":"2014-12-15T14:22:54.088Z"
          }、
          {
             "_id":"548eeec2da11ffbe12000003",
             "体":"牛",
             "タグ":"ムース",
             "日付":"2014-10-15T14:22:58.947Z"
          }
       ]
    }

だから私が抱えている問題は、ヘルパーを正しく評価しないだけでうまくループすることです。

私が得ている結果は次のようになります

牛 2014 年
12 月 15 日 牛2014 年 12 月 15 日
日付は常に同じです。

この牛のように見えるべきです
Dec 15th, 2014
牛 Oct 15th, 2014

4

2 に答える 2

0

元の問題は、ループの各反復内で新しい 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)
于 2014-12-16T05:00:19.110 に答える