amp-state 中是否允许使用 src 属性

Is src attribute allowed in amp-state

我正在尝试使用来自 API 的数据填充 AMP 状态,用于 AMP 电子邮件。我们需要从 API 提供数据,因为它可以同时动态变化。

根据 AMP4email documentation,状态可以从子 <script> 元素或包含 CORS URL 的 src 属性填充到远程 [=30] =] 端点,但不是两者。

实际上,将 src 添加到 amp-state 将抛出以下验证错误: The attribute 'src' may not appear in tag 'amp-state (AMP4EMAIL)'AMP playground

您可以将以下代码复制到 playground 进行测试。

<!doctype html>
<html ⚡4email>
  <head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
    <style amp4email-boilerplate>body{visibility:hidden}</style>
  </head>
  <body>

    <amp-state id="fruits" src="https://amp.dev/static/samples/json/related_products.json"></amp-state>
  </body>
</html>

这是官方验证器的问题,还是文档的问题?

两者都有。众所周知,AMP 的验证器会混淆应用程序。 我建议提交一个验证器 bug issue at the official AMP project on GitHub

<amp-state> 当前不支持电子邮件的 src 属性。来自 AMP for Email Supported Components:

<amp-state> is used to define the initial state used by amp-bind.

Note: The src attribute is not currently supported.

要实现您想要的效果,您可以使用 <amp-list> 在加载时从服务器中提取数据。

编辑: 我打开了 an issue to track updating the component documentation.