如何识别启动core-ajax调用的自定义元素(来自core-ajax响应)

时间:2015-04-27 10:17:41

标签: javascript ajax polymer

我正在使用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 ...但我认为那里必须是一个更简单的解决方案,对吧?

提前谢谢。

1 个答案:

答案 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发送回客户端。