1

我使用 GWTBootstrap3 v0.9.1。

我想显示一个包含存储在数据库中的内容的Popover 。因此,当用户第一次悬停一个元素时,会显示带有Please wait...信息的 Popover。同时,我从数据库中获取了正确的文本,并想用新的内容替换 Popover 的内容。

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

popover.setContent(newText);
popover.reconfigure();

但它不起作用:弹出框消失并且不再显示。

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

4

3 回答 3

2

在这种情况下,我只是编写原生 javascript 方法,让 jquery 实现它。

更好的是,我在 GWT-Bootstrap 库本身中更改它并执行拉取请求,以便将其合并到主存储库中。

我过去为 GWT-Bootstrap3 做过类似的事情,它很快就合并到了主仓库中。

于 2015-09-18T07:22:39.153 回答
2

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

于 2015-12-23T10:28:12.957 回答
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指示在更新期间是否可见弹出框

我通过 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。

于 2015-09-25T08:25:19.683 回答