Mandrill API - Table 中的每个循环车把
Mandrill API - Handlebar each loop in Table
我使用 Mandrill API 通过 PHP 发送我的交易邮件。
现在我 运行 遇到了问题,当我尝试遍历多个变量时,只显示最后一个。
这是我 global_merge_vars
的变量
array(
array(
'name' => 'products',
'content' => array(
array(
"name" => "Product 1",
"price" => "65€"
),
array(
"name" => "Product 2",
"price" => "65€"
),
array(
"name" => "Product 3",
"price" => "65€"
)
)
)
);
我的问题与以数组为内容的产品部分有关。
所以如果我尝试以下操作:
{{#each products}}
{{name}} - {{price}}<br>
{{/each}}
我明白了
Product 1 - 65€
Product 2 - 65€
Product 3 - 65€
到目前为止一切顺利...
但如果我尝试将整个内容包装在 table 中,我总是只显示最后一个数组元素...
<table>
{{#each products}}
<tr>
<td>{{name}} - {{price}}</td>
</tr>
{{/each}}
</table>
结果:
Product 3 - 65€
其实,我认为,这只是我这边的一个愚蠢的错误,但现在,我不知道问题出在哪里!
非常感谢大家的帮助:)
___________________UPDATE________________________
我还发现,如果我将整个 table 放入循环中,它会起作用,如下所示:
{{#each products}}
<table>
<tr>
<td>{{name}} - {{price}}</td>
</tr>
</table>
{{/each}}
但这并不是我之前所说的真正想要的:)
之前从未使用过 Handlebars,所以如果我完全遗漏了什么请原谅我,但我很感兴趣并尝试重现。
Handlebars 版本为:4.0.12。
HTML:
<script id="header" type="text/x-handlebars-template">
<table>
{{#each content}}
<tr>
<td>{{name}} - {{price}}</td>
</tr>
{{/each}}
</table>
</script>
Js(我只是 运行 json_encode()
在你的阵列上):
<script>
var products = [
{
"name": "products",
"content": [
{"name": "Product 1", "price": "65"},
{"name": "Product 2", "price": "65"},
{"name": "Product 3", "price": "65"}
]
}
];
var theTemplateScript = $("#header").html();
var theTemplate = Handlebars.compile(theTemplateScript);
$(document.body).append(theTemplate(products));
</script>
并得到了预期的输出:
Product 1 - 65
Product 2 - 65
Product 3 - 65
这对 OP 来说可能为时已晚,但在花了几个小时试图理解这一点之后,我在 GitHub 线程上找到了解决方案。
基本上你把你的车把标签放在 HTML 这样的评论上:
<table>
<!-- {{#each products}} -->
<tr>
<td>{{name}} - {{price}}</td>
</tr>
<!-- {{/each}} -->
</table>
我使用 Mandrill API 通过 PHP 发送我的交易邮件。
现在我 运行 遇到了问题,当我尝试遍历多个变量时,只显示最后一个。
这是我 global_merge_vars
array(
array(
'name' => 'products',
'content' => array(
array(
"name" => "Product 1",
"price" => "65€"
),
array(
"name" => "Product 2",
"price" => "65€"
),
array(
"name" => "Product 3",
"price" => "65€"
)
)
)
);
我的问题与以数组为内容的产品部分有关。
所以如果我尝试以下操作:
{{#each products}}
{{name}} - {{price}}<br>
{{/each}}
我明白了
Product 1 - 65€
Product 2 - 65€
Product 3 - 65€
到目前为止一切顺利...
但如果我尝试将整个内容包装在 table 中,我总是只显示最后一个数组元素...
<table>
{{#each products}}
<tr>
<td>{{name}} - {{price}}</td>
</tr>
{{/each}}
</table>
结果:
Product 3 - 65€
其实,我认为,这只是我这边的一个愚蠢的错误,但现在,我不知道问题出在哪里!
非常感谢大家的帮助:)
___________________UPDATE________________________
我还发现,如果我将整个 table 放入循环中,它会起作用,如下所示:
{{#each products}}
<table>
<tr>
<td>{{name}} - {{price}}</td>
</tr>
</table>
{{/each}}
但这并不是我之前所说的真正想要的:)
之前从未使用过 Handlebars,所以如果我完全遗漏了什么请原谅我,但我很感兴趣并尝试重现。
Handlebars 版本为:4.0.12。
HTML:
<script id="header" type="text/x-handlebars-template">
<table>
{{#each content}}
<tr>
<td>{{name}} - {{price}}</td>
</tr>
{{/each}}
</table>
</script>
Js(我只是 运行 json_encode()
在你的阵列上):
<script>
var products = [
{
"name": "products",
"content": [
{"name": "Product 1", "price": "65"},
{"name": "Product 2", "price": "65"},
{"name": "Product 3", "price": "65"}
]
}
];
var theTemplateScript = $("#header").html();
var theTemplate = Handlebars.compile(theTemplateScript);
$(document.body).append(theTemplate(products));
</script>
并得到了预期的输出:
Product 1 - 65
Product 2 - 65
Product 3 - 65
这对 OP 来说可能为时已晚,但在花了几个小时试图理解这一点之后,我在 GitHub 线程上找到了解决方案。 基本上你把你的车把标签放在 HTML 这样的评论上:
<table>
<!-- {{#each products}} -->
<tr>
<td>{{name}} - {{price}}</td>
</tr>
<!-- {{/each}} -->
</table>