2011-03-08 20 views
5

एक जीडब्ल्यूटी 2.1+ ऐप में, मैं बाहरी खपत के लिए किसी स्थान पर एक लिंक कैसे उत्पन्न कर सकता हूं?जीडब्ल्यूटी एंकर जगह बनाने के लिए?

उदाहरण के लिए, कहें कि मैं Place1 के लिए एक लिंक बनाना चाहता हूं। आंतरिक खपत के लिए मैं presenter.goTo(new Place1("token")) कर सकता था। मैं इसे Anchor या किसी प्रकार का लिंक कैसे बना सकता हूं जो उपयोगकर्ता अपने ब्राउज़र में पेस्ट कर सकते हैं?

उत्तर

0

यदि आप पहले से ही किसी स्थान पर टोकन मैप कर चुके हैं, तो बस संपत्ति के साथ एक एंकर बनाएं टोकन के बराबर है।

Anchor anchor = new Anchor("go to place1 ", "token"); 
+0

href करना पड़ रहा है नहीं चाहेंगे 'PlacePrefix: Token'? मैं प्रोग्रामेटिक रूप से 'प्लेसफ्रिक्स' कैसे प्राप्त कर सकता हूं? – Justin

5

यहाँ मैं कैसे कर देगा:

final Place1 place = new Place1("token"); 
Anchor anchor = new Anchor("go to place 1", "#" + placeHistoryMapper.getToken(place)); 
anchor.addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
    placeController.goTo(place); 
    event.preventDefault(); 
    } 
}); 
+0

धन्यवाद थॉमस, लेकिन क्या यह अभी भी उपसर्ग नहीं प्राप्त करने का मुद्दा नहीं है? – Justin

+0

नहीं, PlaceHistoryMandler प्लेसहैतिहासिक हैंडलर जेक उत्पन्न करने और विश्लेषण करने के लिए उपयोग करता है, यह प्लेसटाकेनाइज़र के उपसर्गों के बारे में पूरी तरह से अवगत है (यह होना चाहिए!) है। –

2

जहाँ तक मुझे पता के रूप में के रूप में मैं, अपने आप GWT के लिए नया हूँ अगर आप एंकर के बजाय हाइपरलिंक का उपयोग आप ईवेंट हैंडलर लिखने के लिए नहीं होगा। यह आपको जगह पर रीडायरेक्ट करेगा और इतिहास सामान को स्वचालित रूप से संभाल देगा।

1

आप PlaceHistoryMapper का उपयोग करके किसी स्थान को टोकन स्ट्रिंग में परिवर्तित कर सकते हैं। जीडब्ल्यूटी में एमवीपी डिजाइन को कार्यान्वित करने के तरीके के विवरण के लिए https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces देखें।

final YourImplementationOfPlaceHistoryMapper placeHistoryMapper = GWT.create(YourImplementationOfPlaceHistoryMapper.class); 

final Hyperlink link = new Hyperlink("A Link To A Place", placeHistoryMapper.getToken(new YourNewPlace())); 
+0

अच्छा समाधान, क्योंकि यह ओपन-इन-न्यू-टैब पर राइट-क्लिक सक्षम करता है। –

0

MyView.ui.xml:

<g:InlineHyperlink ui:field="link">Link</g:InlineHyperlink> 

MyView.java:

@UiField InlineHyperlink link; 

public MyView() { 
    // ... 
    link.setTargetHistoryToken(getPlaceHistoryMapper(). 
      getToken(new Place1("token"))); 
    // ... 
} 
संबंधित मुद्दे