我正在尝试将我们的堆栈重写为AMP有效
我有以下模式:
现在我想要的是,当您从列表中单击结果时,将搜索输入的值设置为clicked元素的值。就像某种自动完成/选择器。
我尝试过的是在每个列表项上具有 on 属性,
tap:AMP.setState({searchQuery: event.value})
我尝试过:event.value
event.target.value
event.innerHTML
event.innerContent
event.text
还尝试将链接( a )替换为 span 按钮,并得到相同的结果。
使用AMP实际上可行吗?
答案 0 :(得分:2)
您必须将fmap f xs = xs >>= pure . f
元素的值绑定到input
才能起作用。这是一个简化的示例(没有放大器清单):
searchQuery
答案 1 :(得分:0)
我没有找到一种使用标准块类型html元素(如div,span,p,a ...)直接访问所需项目的元素值的方法。 但是,我所做的(并且可行的)方法是使用选择器,甚至是amp-selector并仅使用event.targetOption来获取被点击结果的值...
它不是我想要的,但在功能上是等效的,因此可以。
答案 2 :(得分:0)
根据您的评论,我了解您将输入以外的其他html元素用作列表项,因此无法使用event访问相应的值。尽管这不可能直接实现,但是可以使用AMP.setState来模仿此功能。我认为您的amp-list模板如下所示:
<template type="amp-mustache">
<span class="list-item">{{list-option}}</span>
</template>
您可以尝试使用模板内的amp-mustache将选项值嵌入每个列表项的setState()中,如下所示:
<template type="amp-mustache">
<span class="list-item" on="tap:AMP.setState({searchQuery : {{list-option}} })" >{{list-option}}</span>
</template>