我正在使用Marionette和Handlebars,到目前为止,我已经能够使用以下模板帮助了:
templateHelpers: function(){
return {
formatDate: function(dateString) {
var dateWithOffset = new Date(dateString);
var dateWithoutOffset = new Date(dateWithOffset.getTime() + dateWithOffset.getTimezoneOffset() * 1000 * 60);
return dateWithoutOffset.toLocaleDateString();
}
}
但是,当我尝试在{{each}}块中的.hbs中使用它时,我收到错误。
{{#each mi.Comments}}
{{formatDate date}}</br>
{{/each}}
mi.Comments确实有一个日期属性,如果我删除formatDate,它会为每个评论正确显示未格式化的日期。
这是我得到的错误:
Uncaught Error: Missing helper: "formatDate"
感谢任何指导。这是一个包含多个其他开发人员的大型项目的一部分,我希望不使用HandleBars.registerHelper方法,因此我不需要修改我的基本窗口小部件文件。
答案 0 :(得分:2)
事实证明,当{{#each}}块更改上下文时,它还会更改辅助函数的上下文。 .hbs中的此代码有效:
{{#each mi.Comments}}
{{../formatDate date}}</br>
{{/each}}
'../'告诉Handlebars查看当前上下文的父级,这是辅助函数所在的位置。