【问题标题】:Handlebars Helpers in {{each}} block{{each}} 块中的车把助手
【发布时间】:2016-01-10 11:41:05
【问题描述】:

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

【问题讨论】:

    标签: javascript marionette handlebars.js


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯,这很有趣!好吧,我本可以告诉您有关“路径”语法的信息,但我不知道您可以以这种方式定义特定于视图的 Handlebars 助手,但看起来这正是您所做的。太棒了。
    猜你喜欢
    • 2012-09-04
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2013-02-05
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多