2017-09-05 202 views
1

不久前我注意到,一旦收到响应,iron-ajax使用attribut on-response="callbackFn"执行。聚合物回调作为属性

我的问题是,它是如何工作的?

我有一个类似的情况,我想创建一个组件,可以将回调作为属性,但我不知道如何去做。

两件事情,我注意到

  1. 当触发的功能被正确绑定到它原来的聚合物元件。
  2. “callbackFn”是函数的名称。不是聚合物结合。

所以我假设iron-ajax必须在后台做一些技巧来绑定函数名引用的给定函数。当我查看源代码时,虽然没有看到“on-response”属性的任何处理。没有,zilch,nada。是什么赋予了?

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

source

回答

1

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

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

所以,如果你检查_handleResponse功能存在被利用的代码出动“响应”事件:

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

在聚合物元件使用我们导通事件注释添加事件监听器。例如点击,点击。因此,每调用一次response,它都会调用定义为on-response="callbackFn"的函数,该函数将调用“callbackFn”函数。

+0

这就是它的感谢。 – Ynot