1

GWTBootstrap3 v0.9.1 を使用しています。

データベースに保存されているコンテンツを含むポップオーバーを表示したい。そのため、ユーザーが初めて要素にカーソルを合わせると、ポップオーバーがPlease wait...情報とともに表示されます。その間、データベースから適切なテキストを取得し、ポップオーバーのコンテンツを新しいものに置き換えたいと考えています。

このコードでうまくいくと思いました:

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

しかし、うまくいきません: ポップオーバーが消えて表示されなくなります。

Bootstrap ユーザー向けのソリューションがあることは知っていますが、 GWT -Bootstrap を使用しているため、 jQuery を使用せずにGWTで実行したいと考えています。

4

3 に答える 3

2

このような場合、jquery がそれを実現するためのネイティブな JavaScript メソッドを書くだけです。

さらに良いことに、GWT-Bootstrap ライブラリ自体で変更し、プル リクエストを実行して、メイン リポジトリにマージします。

私は過去に GWT-Bootstrap3 に対してこのようなことを行いましたが、それはすぐにメイン リポジトリにマージされました。

于 2015-09-18T07:22:39.153 に答える
2

件名は既に回答されていますが、GWT の回避策があります。isAnimatedプロパティがの場合、reconfigure メソッドはうまく機能しません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;
    }
});

編集: ShownHandler と HiddenHandler の代わりに ShowHandler と HideHandler を使用することをお勧めします。

于 2015-09-25T08:25:19.683 に答える