我正在使用Polymer生成自定义元素列表(明信片后)。 在每个自定义元素内部都有一个图像的缩略图,该图像将在单击时展开并显示“原始图像”。 “原始图像”链接是从对imgur API(带有core-ajax组件)的ajax调用的响应中获得的。
我尝试了这两条路线......但我仍然不确定最佳解决方案:
1。在每个明信片元素中使用core-ajax组件。
这个解决方案似乎有效,但在我看来它并不优雅。
2。使用单个core-ajax组件来管理每个API请求。
后list.html
<core-ajax
url="{{imgur_url}}"
handleAs="json"
on-core-response="{{handleResponse}}">
</core-ajax>
<template repeat="{{post, postIndex in posts}}">
<post-card post={{post}} id={{postIndex}} on-img-tap={{imgurRequest}}>
</template>
我遇到的主要问题是,当我从core-ajax获得响应时,我无法识别发送请求的自定义元素(发卡后)。
我考虑过创建一个扩展core-ajax的新自定义元素,允许我作为参数传递(并在响应中找回)发送请求的明信片的ID ...但我认为那里必须是一个更简单的解决方案,对吧?
提前谢谢。
答案 0 :(得分:0)
我假设你this.$.ajaxId.go();
函数中有imgurRequest
之类的内容(关于你的第二个解决方案)。您可以做的是通过ajax参数发送postIndex
。您的imgurRequest
看起来有点像这样:
imgurRequest: function(e, detail, sender) {
var postIndex = e.target.templateInstance.model.postIndex;
// Set a property (to postIndex) which is bound to ajax parameter list here ...
this.$.ajaxId.go();
}
这样,您可以在使用相同功能和相同core-ajax元素时区分明信片。服务器当然应该将收到的id发送回客户端。