输出数据中存在的嵌套Handlebar助手

时间:2015-04-28 20:55:02

标签: javascript handlebars.js handlebarshelper

我正面临着一堵墙而没有看到如何循环在提供的数据中找到的把手助手。 我调整了一个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}} }}而不是{{jobTitle}}实际包含{{position.one}} 1}}表达。

似乎我可能需要写一些东西来评估表达式是否包含{{并重新评估。

答案

结束为此编写自定义帮助程序。希望它也可以帮助别人。此帮助程序允许评估在JSON或给定数据集中找到的嵌套表达式。

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

2 个答案:

答案 0 :(得分:1)

结束为此编写自定义帮助程序。希望它也可以帮助别人。此帮助程序允许评估在JSON或给定数据集中找到的嵌套表达式。

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

答案 1 :(得分:0)

在手柄中,表达式不能包含其他表达式。在发送到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;
});