Javascript 输出数据中存在的嵌套把手辅助对象

Javascript 输出数据中存在的嵌套把手辅助对象,javascript,handlebars.js,handlebarshelper,Javascript,Handlebars.js,Handlebarshelper,我碰到了一堵墙,不知道如何在提供的数据中找到车把助手。 我调整了一个JSFIDLE来说明我想要做什么。非常感谢您的帮助 您将看到数据中的{{position.one}等于字符串团队领导,我可以毫无问题地输出该字符串,但是当该助手在{person.jobTitle}中使用时,它只输出前端{{position position one} 是否有办法将此输出设置为{{person.jobTitle}}中的{{position.one}},以便输出为前端团队负责人 这是小提琴。谢谢你看 回复:@luc

我碰到了一堵墙,不知道如何在提供的数据中找到车把助手。 我调整了一个JSFIDLE来说明我想要做什么。非常感谢您的帮助

您将看到数据中的
{{position.one}
等于字符串
团队领导
,我可以毫无问题地输出该字符串,但是当该助手在
{person.jobTitle}
中使用时,它只输出
前端{{position position one}

是否有办法将此输出设置为
{{person.jobTitle}}
中的
{{position.one}}
,以便输出为
前端团队负责人

这是小提琴。谢谢你看

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

我找到了这个库扩展(),但只有当表达式直接位于正在计算的表达式中时,它才起作用,即
{{jobTitle{{{position.one}}}}}
,而不是
{jobTitle}
实际包含
{position.one}
表达式

如果表达式包含
{{
并重新计算,我可能需要编写一些内容进行计算

回答


最后为此编写了一个自定义帮助程序。希望它也能帮助其他人。此帮助程序允许对JSON或给定数据集中的嵌套表达式进行求值


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

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;
});

最后为此编写了一个自定义帮助程序。希望它也能帮助其他人。此帮助程序允许对JSON或给定数据集中的嵌套表达式进行求值


如果没有某种自定义处理程序,我认为无法从数据中呈现模板。。。