2016-12-16 180 views
0

我使用這個代碼的形式:在Scalajs UIKit的事件添加事件偵聽器陣營

dom.document.getElementById("contents").addEventListener("click", { 
    (e0: dom.Event) => println("Got the click event at top level!") 
}, false) 

要在Reactjs事件捕獲實驗。這適用於點擊事件。然而,試圖做同樣的事情UIKit的事件可嵌套組件,如下時:

dom.document.getElementById("contents").addEventListener("start.uk.nestable", { 
    (e0: dom.Event) => println("Got the start event at top level!") 
}, false) 

,我沒有得到任何東西。 nestable documentation列出了四個事件名稱,我嘗試了所有這些名稱 - 但在操作嵌套時從未得到任何響應。我的理解是,如果沒有捕獲,事件應該冒泡到聽衆所在的頂層;但是當使用devtools監視整個文檔的事件時,似乎可嵌套事件並未被觸發。

不正確的事件類型?錯誤的事件名稱? UiKit出於某種原因吞噬了自己的事件?感謝任何幫助。

+0

我猜'addEventListener'只會監聽本地事件https://developer.mozilla.org/en-US/docs/Web/Events。你需要使用jquery列出'start.uk.nestable'類似'$(「#contents」)。on('start.uk.nestable',function(){ println(「在頂部有啓動事件級別!「) });' – sandyJoshi

+0

我認爲它可以聽自定義事件,但我還不清楚。 Jquery確實能夠完成監聽器綁定,所以這只是一個開始 - 我認爲scalajs的實現正在被UIKit用來與Jquery協同工作的事件命名空間絆住。 「[事件] DOT [命名空間]」等等。 – Greg

+0

根據scalajs-react項目上的這個問題線程,它看起來是一個Jquery問題:https://github.com/japgolly/scalajs-react/issues/294 – Greg

回答

0

顯然,這是UIKit中的依賴於使用jQuery的.trigger()發送它的自定義事件,這通常不能聽了通過jQuery來除按照該bug報告的結果:

https://bugs.jquery.com/ticket/11047

這正是我在我的頁面設置中手動添加jQuery偵聽器並通過普通的@JSExport方法回調Scalajs代碼的情況。