聚合回调作为属性

时间:2017-09-05 16:45:04

标签: polymer polymer-1.0

不久前,我注意到,一旦收到回复,iron-ajax会使用attribut on-response="callbackFn"来执行。

我的问题是这是如何运作的?

我有类似的情况,我想创建一个能够将回调作为属性的组件,但我无法弄清楚如何做到这一点。

我注意到的两件事

  1. 触发时,函数正确绑定到它所来自的Polymer元素。
  2. " callbackFn"是函数的名称。不是聚合物结合。
  3. 所以我认为iron-ajax必须在后台做一些技巧来绑定函数名引用的给定函数。当我查看源代码时,虽然我没有看到任何处理响应'属性。没有,齐尔奇,纳达。什么给了?

    我可以看到有一个_boundedHandleResponse,但该属性似乎在任何时候都没有绑定到on-response函数。

    source

1 个答案:

答案 0 :(得分:1)

_boundedHandleResponse是一个值,取决于_handleResponse函数。

_boundHandleResponse: {
  type: Function,
  value: function () {
    return this._handleResponse.bind(this);
  }
}

因此,如果您检查_handleResponse功能,则会有一个“响应”'使用代码调度的事件:

this.fire('response', request, {
  bubbles: this.bubbles,
  composed: true
});

在聚合物元素中,我们使用on- 事件注释添加事件侦听器。例如点击,点击。因此,每次调度response时,它都会调用on-response="callbackFn"上定义的函数,该函数将调用" callbackFn"功能