2017-09-05 142 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