Polymer 3.0 iron ajax返回空响应



我专业地使用过很多Polymer 1和2,但直到今天我才尝试过Polymer 3.0。我正在尝试一个测试响应,但我就是无法让它发挥作用。

这是我的iron ajax组件:

<iron-ajax id="requestData" url="/src/witches-brew-app/requests.json" handle-as="json" 
last-response="{{requests}}"
on-response="_requestResponse"
on-error="_requestError">
</iron-ajax>

我有一个按钮,它调用iron-jax的generateRequest函数,正如您所看到的,当收到响应时会调用一个函数。

_requestResponse(e){
console.info(e);
console.info(this.requests);
}
_getRequests(){
console.info("_getRequests")
this.$.requestData.generateRequest().then(function (e) {
console.info("_getRequests PROMISE")
console.info(this.requests);
}.bind(this));
}

承诺似乎永远不会兑现,但网络选项卡在谷歌Chrome中显示了我的所有数据!

网络选项卡

_requestResponse函数确实会被激发,但它也会将请求属性打印为null。

知道是什么原因造成的吗?我一辈子都搞不清楚。我也试过用自动标志,但我也遇到了完全相同的问题。

很可能您已经在requests属性中收到了数据。但是在上面的代码中,由于检索数据的时间,您收到了null。因此,如果您观察以下属性,您可能会看到iron-ajax:收到的数据

这里是iron ajax DEMO 的工作示例

static get properties() { return { 
requests: { 
type: Object,
observer:'_requestResponse'  }
}
_requestResponse(e){
if (e) {
console.info(e);
console.info(this.requests);
}
}
  • 当然,您需要删除on-response="_requestResponse"

编辑:

static get observers() { return ['_requestResponse(requests)'] }

最新更新