如何在GWTBootstrap中刷新/更新Popover?

时间:2015-09-18 00:58:55

标签: gwt popover gwtbootstrap3

我使用GWTBootstrap3 v0.9.1。

我想显示一个Popover ,其中包含存储在数据库中的内容。因此,当用户第一次悬停元素时,弹出窗口会显示\/\*(.*?)\*\/ 信息。同时我从数据库中获取了正确的文本,并希望用新的内容替换Popover的内容。

我认为这段代码可以解决问题:

Please wait...

但它不起作用:popover消失了,不再显示了。

我知道Bootstrap用户有solutions,但是当我使用 GWT -Bootstrap时,我想在不使用jQuery的情况下在 GWT 中执行此操作。

3 个答案:

答案 0 :(得分:2)

在这种情况下,我只是编写jquery的本机javascript方法来实现它。

更好的是我在GWT-Bootstrap库中更改它并执行pull请求,以便它在主repo中合并。

我过去为GWT-Bootstrap3做了类似的事情,很快就在主回购中合并了。

答案 1 :(得分:2)

该主题已经得到解答,但有一个GWT工作。 isAnimated属性为true时,重新配置方法无效。只需在初始化时将其关闭。

答案 2 :(得分:1)

我遵循@ Knarf的建议并使用原生方法,因为我找不到纯粹的GWT解决方案:

private native void updatePopover(Element element, String popoverHtml, boolean shown) /*-{
    var $popover = $wnd.jQuery(element);
    $popover.data('bs.popover').options.content = popoverHtml;
    if(shown)
        $popover.popover('show');
}-*/;

其中:

  • element是弹出窗口小部件的元素(具有弹出窗口的元素)
  • popoverHtml是新内容
  • shown表示在更新期间是否显示popover

我通过ShowHandler和HideHandler跟踪可见状态:

uiPopover.addShowHandler(new ShowHandler() {
    @Override
    public void onShow(ShowEvent event) {
        popoverVisible = true;
    }
});
uiPopover.addHideHandler(new HideHandler() {
    @Override
    public void onHide(HideEvent event) {
        popoverVisible = false;
    }
});

修改: 使用ShowHandler和HideHandler代替ShownHandler和HiddenHandler会更好。