2

Moment.js を使用して JS Date() オブジェクトを口ひげでフォーマットしようとしていますが、口ひげは評価された値を関数に渡しません。

バックボーン ビュー:

render: function () {
    var user = this.user.toJSON ();  //model

    _.extend (user, {formatLastLoginAt: this.formatLastLoginAt});

    var rendered = mustache.render (template, user);
    this.$el.html (rendered);

    return this;
},

formatLastLoginAt: function () {
   return function (lastLoginAt) {
     return moment (lastLoginAt).format ('Do MMMM YYYY');
  }
}

ユーザー オブジェクトのバインド: mustache に渡す前のユーザー オブジェクト

テンプレート内:

{{#lastLoginAt}}
    <tr>
     <td>Last Login:</td> 
     <td>{{#formatLastLoginAt}}{{lastLoginAt}}{{/formatLastLoginAt}}</td>
    </tr>
{{/lastLoginAt}}

moment.js「 lastLoginAt 」がその値NaNではなくリテラル文字列「{{lastLoginAt}}」として渡されるため、エラーが発生します。Date ()

で試してみましたがmoment ().format ()、動作します。したがって、ラムダ構造は問題{{#lastLoginAt}}なく、空ではありません。

見逃したものはありますか?あなたのアドバイスに感謝します。ありがとうございました。

4

1 に答える 1

4

Mustache はコンテンツをレンダリングしません。関数は 1 つの引数を取りますlastLoginAtが、Mustache は別の引数 を渡しますrender。で呼び出すrenderlastLoginAt、変数が展開されます。

formatLastLoginAt: function () {
   return function (lastLoginAt, render) {
     lastLoginAt = render(lastLoginAt);  // expand variable
     return moment (lastLoginAt).format ('Do MMMM YYYY');
  }
}
于 2013-06-15T05:14:46.357 に答える