如何處理GWT中多個鏈接上的點擊事件。目前,我正在使用gwt-bootstrap組件「Navlink」鏈接元素。網頁中有大約50多個鏈接。我正在使用uibinder查看部分。鏈接添加在uibinder xml中。如何處理選擇哪個鏈接。 我不想給每個鏈接使用uifield,然後處理點擊事件。有沒有辦法做到這一點?請分享任何想法...謝謝..處理gwt中多個鏈接的點擊事件
回答
有2種方法可以解決這個問題:
- 把你所有的50+
NavLinks
到面板(即FlowPanel
,HTMLPanel
,等等),並使用addDomHandler
(如果你使用一個FocusPanel
你可以只使用addClickHandler()
)將Clickhandler
添加到您的Panal
。在這種情況下,您的event.getSource()
將不會是您的NavLink
,而是您的Panel
。所以,你必須使用這樣的事情來獲取真正的點擊目標:
解決方案1:
public void onClick(ClickEvent event) {
Element targetElem = Element.as(event.getNativeEvent().getEventTarget());
Widget targetWidget = null;
//LOOP through all NavLinks and check
if (navLink.getElement().isOrHasChild(targetElem) {
// Do something
}
}
- 添加
ClickHandler
到所有50NavLink
秒。我想你會在一個循環中一般創建你的50+NavLink
。
解決方案2:
ClickHandler clickHandler = new ClickHandler({
public void onClick(ClickEvent event) {
NavLink navLink = (NavLink)event.getSource();
}
}
List<String> screens; // your factory returns a list of strings
for (String screen: screens) {
NavLink navLink = new NavLink();
navLink.setText(screen);
navLink.addClickHandler(clickHandler);
}
你可以寫一個多抓UIHandler這樣
@UiHandler({"examsLink", "test"})
protected void onLinkClick(ClickEvent e) {
NavLink n = (NavLink) e.getSource();
n.getName(); // ...
}
然後,你可以:在一個單一的與共同行爲
- 組鏈接處理器方法。
- 使用枚舉或某種方法根據其屬性檢索NavLink。
目前有超過50個鏈接,未來它可能會達到100.所以,這種方式我不得不繼續添加鏈接名稱..有沒有其他方式... – yogish
但無論如何,你將不得不編寫代碼這100個鏈接是不是?而且每個環節都會有一個很大的變化,我猜想會有不同的動作?在你的情況下,100個鏈接名稱可能會比100個UI處理程序更好。如果你想要的話,你可以寫一些js/jquery來解析DOM並找到頁面上的所有鏈接。如果這不能回答你的問題,請更準確地說明你的最終目的,這樣我就可以告訴你達到它的最佳方式。 – otonglet
我有一種方法。目前所有的鏈接都在htmlpanel下。以下代碼說明了這一點htmlPanel.addDomHandler(新函數clickhandler(){ \t \t \t \t \t \t @Override \t \t \t公共無效的onClick(ClickEvent事件){ \t \t \t \t NavLink navLink =(NavLink)event.getSource(); \t \t \t \t Window.alert( 「點擊鏈接 - >」 + navLink.getName()); \t \t \t \t \t \t \t} \t \t},ClickEvent.getType());但我得到一個例外,「event.getSource()」不能被鑄造成「Navlink」.. – yogish
您可以使用在建造時註冊點擊處理程序的類來擴展Navlink。
點擊處理程序通過EventBus發送一個自定義點擊事件,其中包含您需要的所有信息(名稱,鏈接值,鏈接父級)。因此,您可以在該巴士上聽取自定義點擊事件,獲取您需要的信息。
令人討厭的是,事件來自任何包含新Navlink組件的頁面/組件,但您可以使用Navlink父項區分出處。
這實際上是最好的答案。 – otonglet
- 1. GWT多個事件處理
- 2. Vue.js處理多個點擊事件
- 3. 處理GWT點擊不同方法中的事件
- 4. GWT中的事件處理
- 5. GWT - 如何處理同一事件的多個處理程序
- 6. asp.net事件處理程序,當點擊鏈接按鈕動態
- 7. 如何處理使用PSPDFKit URL鏈接點擊事件鈦
- 8. GWT處理用戶點擊
- 9. Android處理點擊事件
- 10. 如何處理多個事件一次點擊多個PictureBoxes?
- 11. 事件/鏈接處理
- 12. jquery事件處理鏈接
- 13. WebView中的事件點擊鏈接
- 14. 處理android TextView的鏈接點擊
- 15. 在Google Analytics中將一次點擊處理爲多個事件?
- 16. 點擊一個除了鏈接的div上的點擊事件
- 17. 如何處理單擊RichTextBox中的超鏈接的事件
- 18. 事件處理,如何鏈接事件
- 19. 多個控件單擊由一個事件處理的事件
- 20. GWT超鏈接getHTML不支持點擊事件
- 21. Angularjs單擊鏈接中的事件處理
- 22. link_to點擊多個鏈接
- 23. 在點擊事件中插入鏈接
- 24. 處理多個點擊事件的最佳方式
- 25. html body gwt點擊事件
- 26. 消費GWT點擊事件
- 27. 處理在降價內呈現的鏈接的點擊事件React組件
- 28. 如何在Firefox擴展中處理修改的鏈接點擊事件?
- 29. 處理鏈接點擊與骨幹
- 30. 自己處理點擊鏈接 - jQuery Mousedown
請表現出一定的代碼 –
<博:NavLink UI:字段= 「examsLink」 名稱= 「OW」 標題= 「查看考試」 文本= 「科目」/> \t \t \t \t \t \t <博:NavLink UI:場= 「測試」 NAME = 「RR」 標題= 「查看測試」 文本= 「測試」/>這些都是在我的UiBinder的文件的鏈接。 「bo」表示gwt-bootstrap組件。如何知道選擇哪個鏈接? – yogish