没有href的GWT可点击链接(锚)

Pet*_*ego 9 gwt

我正在尝试在GWT中创建一个可以单击的链接(锚点),它ClickEvent可以被处理,同时这个锚点不会重新加载页面.这基本上意味着href不能设置a.

在javascript中,这样做:

<a href="javascript:handleAnchorClick();">Link</a> 
Run Code Online (Sandbox Code Playgroud)

或者

<a href="#" onclick="return handleAnchorClick()">Link</a>  
Run Code Online (Sandbox Code Playgroud)

其中,handleAnchorClick()返回false.

在GWT中实现这一目标的最佳方法是什么?

Chi*_*hii 12

使用tha Anchor元素,并调用其addClickListener()方法并添加您想要的逻辑.这种锚不会重新加载页面.

  • 啊,简单.字段上的`@UiField(provided = true)`. (2认同)

小智 10

在GWT使用处理程序中不推荐使用监听器

像这样的东西:

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

});
Run Code Online (Sandbox Code Playgroud)


小智 8

如您所述,使用href ="#"将重新加载页面.

这是您可以在UIBinder中执行的操作:

    <g:Anchor ui:field="myScriptedAnchor" href="javascript:;">
        MyScriptedAnchorText
    </g:Anchor>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在视图实现中执行任何处理ClickEvent的操作.

    @UiHandler("myScriptedAnchor")
    void onMyScriptedAnchorClick(ClickEvent event) {
        // TODO whatever you want to do...
    }
Run Code Online (Sandbox Code Playgroud)


Gam*_*mbo 8

不要忘记添加一个样式来锚定,否则它不像普通的html链接:

.anchor {
            text-decoration: underline;
            font-weight: bold;
            cursor: pointer;
            display: block;
        }
Run Code Online (Sandbox Code Playgroud)