2010-12-04 9 views
9

मैं जीडब्ल्यूटी में एक लिंक (एंकर) बनाने की कोशिश कर रहा हूं जिसे क्लिक किया जा सकता है और यह ClickEvent संसाधित किया जा सकता है, जबकि साथ ही यह एंकर पृष्ठ को फिर से लोड नहीं करेगा। इसका मूल रूप से मतलब है कि href सेट नहीं किया जाना चाहिए।GWT क्लिक करने योग्य लिंक (एंकर) बिना href

जावास्क्रिप्ट में यह इस तरह से किया जाता है:

<a href="javascript:handleAnchorClick();">Link</a> 

या

<a href="#" onclick="return handleAnchorClick()">Link</a> 

जहां handleAnchorClick() रिटर्न झूठी साथ।

जीडब्ल्यूटी में इसे हासिल करने का सबसे अच्छा तरीका क्या होगा?

+0

आप एक href कि के साथ एक '#' पेज शुरू होता है निर्धारित करते हैं तो नहीं होगा पुनः लोड किया जाना चाहिए, लेकिन इतिहास का ढेर बदल दिया जाएगा, और आप उस घटना का जवाब दे सकते हैं। –

+0

बिल्कुल, इतिहास का ढेर बदल गया है और मैं उस पर क्लिक करने के लिए बस एक क्लिक करने योग्य लिंक नहीं करना चाहता हूं। –

उत्तर

12

था Anchor element का उपयोग करें, और इसे addClickListener() method पर कॉल करें और अपनी इच्छानुसार जो भी तर्क चाहते हैं उसे जोड़ें। इस प्रकार का एंकर पृष्ठ को फिर से लोड नहीं करता है। ,

Anchor a = new Anchor("hi"); 
a.addClickhandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
      Window.alert("hi"); 
    } 

}); 
+0

हां यह सही तरीका प्रतीत होता है। अब मुझे उइबिंदर में इस विशिष्ट कन्स्ट्रक्टर के साथ एंकर का उपयोग करने का एक तरीका ढूंढना होगा। –

+2

आह, सरल। '@UiField (प्रदत्त = सत्य)' मैदान पर। –

+0

क्लिक लिस्टनर पहले से ही वंचित है (मेरे पास वही है [प्रश्न] (http://stackoverflow.com/questions/7387019/create-link-in-table-cell-and-open-float-popup-by-click-from- यह) – yetanothercoder

10

श्रोताओं GWT उपयोग संचालकों में पदावनत कर रहे हैं

कुछ ऐसे ही।

यह है कि तुम क्या UiBinder में क्या कर सकते हैं:

<g:Anchor ui:field="myScriptedAnchor" href="javascript:;"> 
     MyScriptedAnchorText 
    </g:Anchor> 

तो फिर तुम जो कुछ भी आप दृश्य कार्यान्वयन में ClickEvent से निपटने चाहते हैं कर सकते हैं।

@UiHandler("myScriptedAnchor") 
    void onMyScriptedAnchorClick(ClickEvent event) { 
     // TODO whatever you want to do... 
    } 
+0

AddClickhandler काम नहीं करता है, यह "addClickHandler" होना चाहिए, यह भी बंद ब्रेस भूल गया है, यह कोड संकलित करता है: btnLogout.addClickHandler (नया क्लिकहैंडलर() { @ ओवरराइड सार्वजनिक शून्य ऑनक्लिक (क्लिकवेवेंट ईवेंट) { विंडो.लर्ट ("हाय"); } }); – XhkUnlimit

8

आप का वर्णन के रूप में href = "#" का उपयोग कर पृष्ठ पुनः लोड होगा:

8

अन्यथा एंकर करने के लिए यह does not एक सामान्य html लिंक की तरह व्यवहार एक शैली को जोड़ने के लिए मत भूलना:

.anchor { 
      text-decoration: underline; 
      font-weight: bold; 
      cursor: pointer; 
      display: block; 
     } 
संबंधित मुद्दे