把手帮助{{each}}块

时间:2015-10-12 21:27:46

标签: javascript marionette handlebars.js

我正在使用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方法,因此我不需要修改我的基本窗口小部件文件。

1 个答案:

答案 0 :(得分:2)

事实证明,当{{#each}}块更改上下文时,它还会更改辅助函数的上下文。 .hbs中的此代码有效:

{{#each mi.Comments}}
   {{../formatDate date}}</br>
{{/each}}

'../'告诉Handlebars查看当前上下文的父级,这是辅助函数所在的位置。