Polymer 3.0 iron-ajax 返回空响应

Polymer 3.0 iron-ajax returning null response

我在专业上使用过 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));
}

承诺似乎从未 return,但网络选项卡显示了我在 Google Chrome 中的所有数据!

Networking tab

_requestResponse 函数确实被触发,但它也将 requests 属性 打印为 null。

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

很可能您已经在 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)'] }