【发布时间】:2016-10-10 09:17:29
【问题描述】:
我们正在使用 config.json 来设置基于 Handlebars 的布局,以从模板生成电子邮件。此 json 配置包括部分名称和该部分的内容(图像、标题和描述)。
/partials/.. 被称为:
- primary.html
- secondary.html
这是 /data/config.json 的示例 - 您可以看到“模块”节点包含部分及其内容:
{
"subject": "my email subject",
"pretext": "this is the pretext text",
"modules": {
"primary":{
"image": {
"src": "primary-hero.jpg",
"alt": "This is the primary image"
},
"headline": "Primary Headline",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate nulla ipsam ratione rem incidunt quasi quos, possimus cumque neque corporis, dignissimos deserunt perspiciatis totam. Totam itaque distinctio deserunt fugiat nostrum."
},
"secondary":{
"image": {
"src": "secondary-hero.jpg",
"alt": "This is the secondary hero image"
},
"headline": "Secondary Headline",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate nulla ipsam ratione rem incidunt quasi quos, possimus cumque neque corporis, dignissimos deserunt perspiciatis totam. Totam itaque distinctio deserunt fugiat nostrum."
},
}
}
我目前在 /pages/index.html 中有一个可以使用的把手循环,但使用了比较助手。显然,这种方法存在问题,因为它强制执行任意渲染顺序,并且在 json 中重复部分时也会失败:
{{#each config.modules}}
{{#ifEqual @key "primary"}}
{{> primary}}
{{/ifEqual}}
{{#ifEqual @key "secondary"}}
{{> secondary}}
{{/ifEqual}}
{{/each}}
更理想的是,循环应该是这样的:
{{#each config.modules}}
{{ > @key }}
{{/each}}
当然失败了:
Panini: rendering error ocurred.
{ [Error: The partial @key could not be found]
description: undefined,
fileName: undefined,
lineNumber: undefined,
message: 'The partial @key could not be found',
name: 'Error',
number: undefined }
有没有办法做到这一点——通过 json 传递部分名称?
【问题讨论】:
标签: javascript json handlebars.js