如何找到乙個前端事件對應的事件處理函式

2021-09-03 01:17:29 字數 1617 閱讀 9425

例子:

我想知道這個被fire的_change事件,到底被哪些處理函式接收並處理?

我們一步步來。

反思一下,你的button 設定text時,比如你傳了乙個「click me」給button,框架會丟擲乙個-change的event.你注意到了這個event,並且做出了乙個猜想: 你最後之所以能在ui上看到click me的文字,是因為那個event event丟擲去之後,背後有某個event handler在處理這個event. 這個event handler負責把click me的文字畫到ui上。

然後你問我想找到這個event handler的具體實現。這個假設完全合理。然後我們debug fireevent的具體實現,發現其邏輯就是遍歷乙個array,該array存放了所有註冊在change event上的js function.但是我們debug發現這個array是空的。因此證明你這個假設是錯誤的,在當前session裡,沒有任何乙個function註冊在了change event上。這個change event白白丟擲去了,沒有任何人理它。這也是合理的。我們為什麼要設計event publish/subscribe這套pattern?無非是為了解耦事件發布和事件監聽者的依賴關係。比如我在教室裡直接吼一聲,我愛玩星際!我吼的時候,根本不care到底有沒有喜歡。當有人監聽了我吼的事件,這裡的event就是我吼的聲音。事件被監聽之後,監聽者列印一條log,我也喜歡,來一局。他監聽之前,他也不care到底是誰吼的,他關心的只是event本身,即我愛打星際這句話。而我,就是oevent.source.

做出錯誤的假設一點不可怕,但最重要的是,你要有能力通過閱讀**迅速確認自己的假設到底是100%正確還是100%錯誤。如果不能做到僅憑debug現成的**就能做到100%肯定或否定,請自己設計一些測試**和程式來驗證自己的猜想。

再回到這個具體的問題。始終記住我們在eb開發這個大topic下,任何前端框架,crm web ui, sap ui5, angular, react or whatever,無論多花哨的技術,最終都要回到用dom node渲染ui上去. 我們在ui上看到的所有文字和效果,最終也都來自dom node. 而dom node從哪來?從控制項對應的render來。所以這個問題一旦判定了button text 不是通過change event的監聽者畫出來的之後,要果斷往其他方向想。

ui5 framework裡你們看到的大多數**都只是個中間層,裡面的crud不會直接影響到最後ui的顯示,因此千萬不要有你看到一行js**比如setvalue(「a」)就期望在ui上馬上看到乙個a. ui5不是這樣design的。真正重新整理ui的操作都是在renderer裡做的。

如何讓觸控事件穿透乙個View

如何讓觸控事件穿透乙個view 偶然間發現,如何遮蔽或者讓觸控事件穿透乙個view是乙個很簡單的事情。現象 原始碼 userinteraction created by youxianming on 14 10 23.import viewcontroller.h inte ce viewcontr...

C 事件 換乙個角度理解委託和事件

我們建乙個控制台程式。未使用委託 事件之前的 using system class program 首先要定義乙個button類,裡面應該有乙個click方法 public class button 上面這個類是封裝了的,使用者不可見,或者理解為使用者不能更 改也可以 下面這個類提供給使用者 pub...

如何給頁面上的按鈕繫結乙個事件?

title function buttonhandler script head onclick buttonhandler 按鈕button body html 複製 也可以這樣 title function buttonhandler script head id button 按鈕button...