2010-12-04 14 views
9

GWTでクリックできるリンク(アンカー)を作成しようとしていますが、ClickEventを処理できますが、同時にこのアンカーはページをリロードしません。これは基本的にhrefを設定してはならないことを意味します。hrefなしのGWTクリック可能なリンク(アンカー)

これは次のように行われるJavaScriptで

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

又は

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

handleAnchorClick()戻り偽有します。

これをGWTで達成するにはどうすればよいでしょうか?

+0

あなたが '#'で始まるのhrefを設定するとページがしませんリロードすることができますが、履歴スタックが変更され、そのイベントに応答することができます。 –

+0

正確には、ヒストリスタックが変更されているため、クリック可能なリンクを持つだけで対処したくありません。 –

答えて

12

Anchor elementを使用し、そのaddClickListener() methodを呼び出して、これまでのロジックを追加してください。この種のアンカーはページをリロードしません。ページをリロードしますHREF = "#" を使用して、

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

}); 
+0

はい、これは正しい方法です。今は、UiBinderでこの特定のコンストラクタでAnchorを使用する方法を見つける必要があります。 –

+2

ああ、簡単です。フィールドに '@UiField(= true)'を指定します。 –

+0

ClickListenerは既にdepricatedです(私は同じ[質問]を持っています(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 (){ @Override 公開ボタンonClick(ClickEventイベント){ Window.alert( "hi"); } }); – XhkUnlimit

8

あなたが記述したよう:

8

それ以外の場合は、通常のHTMLリンクのように動作does notの係留するスタイルを追加することを忘れないでください:

.anchor { 
      text-decoration: underline; 
      font-weight: bold; 
      cursor: pointer; 
      display: block; 
     } 
関連する問題