我已经很专业地使用了Polymer 1和2,但是直到今天我还没有尝试过Polymer 3.0。我正在尝试测试响应,但无法正常工作。
这是我的铁质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));
}
这个承诺似乎永远不会实现,但是“网络”标签会在Google Chrome浏览器中显示我的所有数据!
_requestResponse函数的确会被触发,但是也会将 requests 属性打印为null。
有什么想法会导致这种情况吗?我无法弄清楚我的一生。我也尝试过使用auto标志,并且得到完全相同的问题。
答案 0 :(得分:0)
很可能您已在requests
属性处接收到数据。但是在上面的代码中,由于检索数据的时间安排,您收到的数据为空。因此,如果您观察到如下所示的属性,则可能会看到iron-ajax
收到的数据:
这里是铁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)'] }