Html 我可以使用amp state设置一个简单的键值对吗?

Html 我可以使用amp state设置一个简单的键值对吗?,html,amp-html,express-handlebars,Html,Amp Html,Express Handlebars,我试图使用amp状态设置一个简单的{key:value}对。目前在我的代码中,我必须对键值对的每个设置状态进行初始化。该项目正在使用快速把手模板和AMP进行模板中的状态管理。每个关键点都有一个默认的把手值。但是当一个值改变时,我必须初始化所有的安培状态值。这会导致大量重复的代码,通过将状态设置为initial可以大大改进这些代码。但是,将所有conde转换为包含键值对的大对象会使我的代码复杂化很多,所以我不想使用amp文档中的确切示例 例如,我想默认如下内容 点击:AMP.setState({

我试图使用amp状态设置一个简单的{key:value}对。目前在我的代码中,我必须对键值对的每个设置状态进行初始化。该项目正在使用快速把手模板和AMP进行模板中的状态管理。每个关键点都有一个默认的把手值。但是当一个值改变时,我必须初始化所有的安培状态值。这会导致大量重复的代码,通过将状态设置为initial可以大大改进这些代码。但是,将所有conde转换为包含键值对的大对象会使我的代码复杂化很多,所以我不想使用amp文档中的确切示例

例如,我想默认如下内容

点击:AMP.setState({
液化天然气:恩,
selectedVal:selectedVal | |{{baseVal}}},
rate:rate | |{{lookup currencyRates baseCurrency}},
symbol:symbol | |{{lookup symbols baseCurrency}}
}),

使用

我试图寻找一个解决办法,但没有成功。有人知道有没有解决办法吗?如果是,女巫?如果没有,有人知道原因吗


感谢您的建议。

AMP.setState允许您深度合并状态对象:

我认为您缺少一个state对象的初始化,它将允许您使用默认值填充state

您可以通过a)直接将JSON呈现为
amp状态
组件或b)使用
src
属性从端点检索数据

a)服务器呈现状态

<amp-state id="myStateObject">
<script type="application/json">
{
    "lng": "en",
    "selectedVal": "lookup baseVal",
    "rate": "lookup currencyRates baseCurrency",
    "symbol": "lookup symbols baseCurrency"
}
</script>
</amp-state>
<amp-state id="myStateObject" src="/some/json/endpoint"></amp-state>

我终于找到了答案。也许它也会帮助别人

所以,即使文档很难理解,也没有只包含键值对的示例,就像在第页上一样。 结论是,只需在脚本标记中插入一个简单字符串(类似于第二页的示例),就可以加载一个简单的键值对:


“世界”

我发现它非常混乱,因为我希望在脚本标记中放置一个json对象。但这似乎很有效。

谢谢。我有点理解。我阅读了amp文档。但我的问题是,状态不是由我创建的,我们有几个未初始化的键值对。相反,最初打印车把值,并在AMP.SetState()的帮助下初始化状态。但是当你初始化一个值时,你需要设置所有的键值对。现在我知道这是不正确的,但当我进入项目时是这样的,将状态更改为嵌套对象需要做很多工作(正如我现在指出的,例如,lng state witch不是一个对象,而是一个包含当前语言值的字符串)。因此,我是否应该理解这是不可能的,并且在amp state中通常是一种不好的做法?
<button
    on="tap:AMP.setState({
        myStateObject: {
            selectedVal: 'newSelectedVal'
        }
    })"
>
    Click me
</button>
<amp-state id="myText">
  <script type="application/json">
    "World"
  </script>
</amp-state>