簡體   English   中英

聚合物1.0中的處理程序委派

[英]Handlers delegation in polymer 1.0

更新 :響應和錯誤事件不再冒泡。 https://github.com/PolymerElements/iron-ajax/releases/tag/v1.0.5真可惜。

原始問題:

我想基於iron-ajax創建自定義ajax組件,以添加幾個自定義標頭和處理程序。 盡管尚未實現自定義元素繼承,但我只是將iron-ajax添加到了my-ajax中,並打算將所有api委托給iron-ajax,這與generateRequest一起很好地工作了。

但是,當涉及到處理程序方法時,我注意到它無需任何委托即可工作。 在my-ajax elt中沒有定義響應響應處理程序,但handleResponse仍被調用。

據我了解,發生這種情況是因為Polymer.Base._addFeature._createEventHandler(polymer.html:345)使用頂級elt的“ this”作為處理程序方法定義的“宿主”。

所以問題是:它是錯誤還是功能?

示例代碼:

 <link rel="import" href="https://raw.githubusercontent.com/Polymer/polymer/master/polymer.html"> <link rel="import" href="https://raw.githubusercontent.com/PolymerElements/iron-ajax/master/iron-ajax.html"> <dom-module id="my-ajax"> <template> <iron-ajax id="ironAjax" url="http://echo.jsontest.com/key/value/otherkey/othervalue" handle-as="json" debounce-duration="300" > </iron-ajax> </template> <script> Polymer({ is: "my-ajax", generateRequest: function(){ this.$.ironAjax.generateRequest(); } }); </script> </dom-module> <dom-module id="my-elt"> <template> <button on-click="buttonClick">Button</button> <my-ajax id="myAjax" on-response="handleResponse"> </my-ajax> </template> <script> Polymer({ is: "my-elt", buttonClick: function(){ this.$.myAjax.generateRequest(); }, handleResponse: function(event) { alert('got response'); } }); </script> </dom-module> <my-elt></my-elt> 

大多數事件都會冒泡,因此您可以通過放置在my-ajax實例上的處理程序看到response事件從my-ajaxmy-elt范圍。 這與click事件從較低范圍到較高范圍冒泡的情況相同。

答案是:“功能”(網絡平台的功能,而不是Polymer本身)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM