html - 用于电子邮件的 AMP:如何处理用于电子邮件的 AMP 中的复杂条件逻辑?
问题描述
我开发了一个代码,它使用 amp-list 从后端服务器检索 json 数据。基于来自服务器的变量之一,我想要一个 if 条件。下面提到了我希望完成的示例:
<html ⚡4email data-css-strict>
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
<script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>
<style amp4email-boilerplate>body{visibility:hidden}</style>
<style amp-custom>
h1 {
margin: 1rem;
}
</style>
</head>
<body>
<amp-list template="list-template" src="https://random_server_link/get_x_value_and_y_value" layout="responsive">
<template id="list-template" type="amp-mustache">
{% if {{x}} == {{y}} %}
<p>
x == y
</p>
{% elif {{x}} != {{y}} %}
<p>
x not equal to y
</p>
{% else %}
<p>
else condition
</p>
{% endif %}
</template>
</amp-list>
<h1>Hello, I am an AMP EMAIL!</h1>
</body>
</html>
上面的代码不起作用,我需要 if-else 条件的替代方法。
谢谢
解决方案
对于简单的 if/else 测试 Mustache 变量的真实性,您可以使用部分标记和倒置部分标记,如AMP 文档和Mustache 文档中所述。请参阅如何在 mustache.js 中完成 if/else?举些例子。
对于比简单的真实性测试更复杂的事情(例如,两个变量之间的相等性检查),您必须将该逻辑推送到服务器端。Mustache 不具备比较值或表达两个变量之间的任何其他二元关系的能力。它被设计成一个无逻辑的模板。在服务器端进行计算,将其转换为简单的位,您可以在客户端使用 Mustache 中的部分标签和倒置部分标签进行检查。
推荐阅读
- verifiable-c - 为什么 while 循环基于条件表达式的类型检查(w/tc_expr)?
- java - 如何解决 Textview setText() 在空对象引用上
- c# - 自动化在 .NET Core 中创建私钥、CSR 和最终签名证书的过程
- javascript - 写入 __proto__ 对象
- node.js - odas web 执行时出现错误“sink pots: cannot connect to server”
- java - ASM 字节码覆盖方法作用域 var 接近方法结束
- java - 如何从具有键值对的csv中删除重复行?
- unity3d - 在 Unity 中测量帧大小
- excel - 列中的日期范围检查之间
- c++ - 带有 std::vector 的 MPI_Scatter 和 MPI_Gather