我正在尝试使用带胡子的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');
}
}
用户对象绑定:
在模板中:
{{#lastLoginAt}}
<tr>
<td>Last Login:</td>
<td>{{#formatLastLoginAt}}{{lastLoginAt}}{{/formatLastLoginAt}}</td>
</tr>
{{/lastLoginAt}}
moment.js
提供NaN
错误,因为'lastLoginAt'作为文字字符串“{{lastLoginAt}}”而不是Date ()
值传入。
尝试moment ().format ()
,它有效。因此lambda结构应该没问题且{{#lastLoginAt}}
非空。
我错过了什么?感谢您的建议。谢谢。
答案 0 :(得分:4)
Mustache不会为您呈现内容。你的函数只需要一个参数lastLoginAt
,但是Mustache会传递给你另一个:render
。使用render
调用lastLoginAt
会扩展变量:
formatLastLoginAt: function () {
return function (lastLoginAt, render) {
lastLoginAt = render(lastLoginAt); // expand variable
return moment (lastLoginAt).format ('Do MMMM YYYY');
}
}