Polymer 1.0:多次调用iron-request的send()方法

时间:2015-06-02 17:58:29

标签: javascript ajax polymer polymer-1.0

我有一个使用<iron-ajax>实例的组件从后端检索数据,我想使用<iron-request>发送更新,例如P​​OST / DELETE请求。

第一次一切都很完美。但是,如果再次调用请求,我会收到错误:

  

未捕获的TypeError:无法读取属性&#39;然后&#39;未定义的

我的模板定义如下:

...
<iron-ajax id="ajax" auto verbose
    url="/cart-api/"
    last-response="{{ajaxResponse}}"
    handle-as="json">
</iron-ajax>

<iron-request id="xhr"></iron-request>
...

在我的组件脚本中,我使用send()的{​​{1}}方法发送POST:

<iron-request>

错误消息表明var me = this; this.$.xhr.send({ url: "/cart-api", method: "POST", body: JSON.stringify(entry) }).then(function() { me._refresh(); }, function() { console.error("POST failed"); }); 已返回send而非有效的Promise对象。

所以我的问题是:undefined元素实际上是可重用的吗?我是否需要做任何事情来刷新或重新初始化它?

更新

感谢@Zikes我更新了我的代码如下:

<iron-request>
<iron-ajax id="ajaxGet" auto
    url="/cart-api/"
    last-response="{{ajaxResponse}}"
    handle-as="json">
</iron-ajax>

<iron-ajax id="ajaxPost" url="/cart-api" method="POST" on-response="_refresh"></iron-ajax>

<iron-ajax id="ajaxDelete" method="DELETE" on-response="_refresh"></iron-ajax>

1 个答案:

答案 0 :(得分:6)

<iron-ajax>组件会针对每个新请求产生新的<iron-request>https://github.com/PolymerElements/iron-ajax/blob/master/iron-ajax.html#L442

如果您正在寻找可重用性(以及去抖动等其他不错的功能),那么使用<iron-ajax>组件可能会更好。