我已经使用了uibinder一段时间并且相当不错。我知道使用HTMLPanel和Anchor来添加点击处理程序。但是,有些情况下,这种设计方法根本不符合要求。
说我有一个无序列表,每个列表都有一些锚元素。
<ul><li><a ...></li>...</ul>
最好将每个li作为一个组件(java类),这样你就可以在ul中添加组件的多个实例。这意味着在ui.xml中,你从li开始(没有其他我能看到的方式)。但是没有办法在里面插入Anchor。你不能用HTMLPanel替换li,因为这会创建一个你不想要的div。
将锚点留在此uibinder中,将无法检测到锚点击事件。
任何想法?
答案 0 :(得分:1)
在HTML中,将ID设置为锚点:
<a id='testachor'>...</a>
在你的GWT代码中,将锚点包装到一个小部件中:
Anchor testAnchor = Anchor.wrap(Document.getElementById('testanchor'));
然后添加点击处理程序:
testAnchor.addDomHandler(new ClickHandler(){...}, ClickEvent.getType());
答案 1 :(得分:1)
您可以在<li>
代码中添加Anchor小部件:
<g:HTMLPanel>
<ul>
<li>
<g:Anchor ui:field="link" />
</li>
</ul>
</g:HTMLPanel>