【问题标题】:Output Nested Handlebar helpers that exist in the data输出数据中存在的嵌套 Handlebar 助手
【发布时间】:2015-04-29 13:40:53
【问题描述】:

我碰壁了,但没有看到如何遍历在提供的数据中找到的车把助手。 我调整了一个 jsfiddle 来说明我想要做什么。任何帮助是极大的赞赏。

您会看到数据中的{{position.one}} 等于字符串Team Lead,我可以毫无问题地输出它,但是当在{{person.jobTitle}} 中使用该助手时,它只会输出Front End {{position.one}}

有没有办法让这个输出{{position.one}} 位于{{person.jobTitle}} 中,以便输出为Front End Team Lead

这是小提琴。感谢您的观看!

http://jsfiddle.net/z9u5jz7w/1/

回复:@luciano-santos 试图找到一种方法来遍历所有内容,无论表达式是独立的还是数据包含另一个表达式。

我找到了这个库扩展 (https://github.com/mateusmaso/handlebars.nested),但似乎只有当表达式直接在被评估的表达式中时才有效,即 {{jobTitle {{position.one}} }} 而不是实际上包含 {{position.one}} 表达式的 {{jobTitle}}

如果表达式包含{{ 并重新评估,我可能需要写一些东西来评估。

回答

最终为此编写了一个自定义助手。希望它也可以帮助其他人。此帮助器允许评估在 JSON 或给定数据集中找到的嵌套表达式。

https://github.com/davidwickman/handlebars-helper-inception

【问题讨论】:

  • 我不认为你可以从数据中渲染模板,没有某种自定义处理程序......

标签: javascript handlebars.js handlebarshelper


【解决方案1】:

最终为此编写了一个自定义助手。希望它也可以帮助其他人。此帮助器允许评估在 JSON 或给定数据集中找到的嵌套表达式。

https://github.com/davidwickman/handlebars-helper-inception

【讨论】:

    【解决方案2】:

    在车把中,表达式不能包含其他表达式。您最好在发送到 Handlebars 之前准备好数据,就像您对名称所做的那样:

    var data = { 
        users: [ { 
            person: {
                firstName: "Garry", 
                lastName: "Finch"
            },
            job: {
                title: "Front End",
                position: "Team Lead"
            },
            twitter: "gazraa" 
        } ]
    };
    

    这样,您可以创建一个助手,就像您对人名所做的那样,并连接两个值。

    Handlebars.registerHelper('fullJob', function(job) {
      return job.title + " " + job.position;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多