使用 JSX 在 HTML 中调用方法或迭代数组
Call Method Or Iterate over Array in HTML with JSX
我 运行 遇到了一个我以前从未遇到过的问题,老实说,这是我第一次不得不按照这些思路写一些东西,但似乎没有找到解决方案。
我正在使用 SendGrid 通过节点上的 POST 快递发送一封 HTML 电子邮件。在我需要遍历购物车中的项目以自定义 HTML 并反映每个项目之前,这工作得很好。
目前,在 HTML 中,我可以通过调用 ${req.body.data.item_name}
来打印一个变量
这很好用,但在 ${req.body.data.cart}
处是他们刚购买的一系列商品。
对于 UIX,我想显示所有已购买商品的列表以及价格和数量。
我尝试过的一种方法是编写辅助函数:
function iterateItems(cart){
let body = ""
cart.forEach(function(item) {
body = body + `<p style="Margin-top: 20px;Margin-bottom: 0;">${item.name}: $${item.price} QTY: ${item.qty}</p>`
})
}
然后在 HTML 文本中尝试用 ${this.iterateItems(req.body.data.cart)}
调用它
返回时未定义,老实说我有点期待。我很好奇解决这个问题并让它发挥作用的最佳方法是什么。
尝试使用 map 而不是 foreach ,应该可以解决问题
您创建的函数 returns 未定义,因为它 return
没有任何内容。你可以试试这个:
function iterateItems(cart){
let body = ""
cart.forEach(function(item) {
body = body + `<p style="Margin-top: 20px;Margin-bottom: 0;">${item.name}: $${item.price} QTY: ${item.qty}</p>`
})
return body;
}
希望这对你有用。
我 运行 遇到了一个我以前从未遇到过的问题,老实说,这是我第一次不得不按照这些思路写一些东西,但似乎没有找到解决方案。
我正在使用 SendGrid 通过节点上的 POST 快递发送一封 HTML 电子邮件。在我需要遍历购物车中的项目以自定义 HTML 并反映每个项目之前,这工作得很好。
目前,在 HTML 中,我可以通过调用 ${req.body.data.item_name}
来打印一个变量
这很好用,但在 ${req.body.data.cart}
处是他们刚购买的一系列商品。
对于 UIX,我想显示所有已购买商品的列表以及价格和数量。
我尝试过的一种方法是编写辅助函数:
function iterateItems(cart){
let body = ""
cart.forEach(function(item) {
body = body + `<p style="Margin-top: 20px;Margin-bottom: 0;">${item.name}: $${item.price} QTY: ${item.qty}</p>`
})
}
然后在 HTML 文本中尝试用 ${this.iterateItems(req.body.data.cart)}
返回时未定义,老实说我有点期待。我很好奇解决这个问题并让它发挥作用的最佳方法是什么。
尝试使用 map 而不是 foreach ,应该可以解决问题
您创建的函数 returns 未定义,因为它 return
没有任何内容。你可以试试这个:
function iterateItems(cart){
let body = ""
cart.forEach(function(item) {
body = body + `<p style="Margin-top: 20px;Margin-bottom: 0;">${item.name}: $${item.price} QTY: ${item.qty}</p>`
})
return body;
}
希望这对你有用。