2016-12-15 12 views
0

私はGXT(とGWT/GWTP)に関しては非常に新しくなっています。パネルを含むモーダルダイアログが表示されているとき(最初は表示されず、ボタンがクリックされたときにのみ表示される)、GXT(4.0)[カスタム]ウィジェットを遅延ロードできるかどうかを知りたいです。親が可視になったときにGXTウィジェットを遅れて初期化/ロードする

このウィジェットは、このウィジェットがアプレットHTMLコードをロードする必要があるため、ページが最初に他のフィールドウィジェット/パネル/ダイアログをインスタンス化するときには使用できません。したがって、ダイアログが明示的に表示されるまで、別のアプリケーションからアプレットコードを取得するのを延期する必要があります。

これは可能ですか?

+0

はい、遅延ロードが可能です。たとえば、IFrameElementにはLoadHandlerイベントがあります。他のウィジェットには、あなたがタグ付けできるイベントもあります。 – WLGfx

+0

もう少し詳しく説明できますか? – NuCradle

答えて

0

GWTフレーム(IFrameElement)に読み込まれた画像とURLのレイジ​​ー読み込み。 Image/URLがLoadHandlerイベントを使用してロードされたとしたら、イベントを捕捉できます。

private void loadLoginPage() { 
    final Frame frame = new Frame(url_base + url_login); // set the frames url 
    frame.addLoadHandler(new LoadHandler() { 
     @Override 
     public void onLoad(LoadEvent event) { 
      // Get the document from the loaded frame (similar to RootPanel on main page) 
      Document doc = IFrameElement.as(frame.getElement()).getContentDocument(); 

      // From here you can wrap widgets in the frame like this 

      final TextBox username = TextBox.wrap(doc.getElementById("username")); // from the html doc using id="username" 

      // grab a div element 

      DivElement div = DivElement.as(doc.getElementById("mydiv")); 

      // Create content to be added to the doc 

      ButtonElement button_elem = doc.createPushButtonElement(); 
      Button button = Button.wrap(button_elem); 

      // attach to the document 

      div.appendChild(button.getElement()); 
     } 
    }); 
    // Attach to DOM 
    RootPanel.get("mything").add(frame); 
} 

画像ローディングの場合も同様です。このことができます

Image image = new Image(image_url); 
image.addLoadHandler(new LoadHandler() { 
    @Override 
    public void onLoad(LoadEvent event) { 
     // image is ready to be used. 
    } 
}); 
// attach to DOM to initiate loading of the image 

希望...

+0

残念ながら、それは彼らが求めているものではありません。iframeは添付された時点よりも遅く読み込まれ、画像を添付しなくてもすぐに読み込みを開始します(また、あなたは決してハンドラを得ることはありません...)。書かれた質問は、親が_visible_になるまで延期する方法を求めており、まだ添付されている間は多くの方法で見えなくすることが可能です。 –

+0

@ColinAlworthあなたは正しいです。私はUIが新しく、いくつかの基本的な概念は把握するのが難しく、特にこの点については初心者のためのGXTリソースがあまりないということがあります。 GXTの 'LoadHandler'(GWTではなく)を実装するために私のウィジェット(' Html'を拡張)を作り、そのコンストラクタに 'addHandler(this、Type <...>)'を登録しようとしました。ダイアログが表示されようとしているが、ウィジェット内の 'onLoad(LoadEvent <...>)'の実装が決して呼び出されないときは、プレゼンターの 'LoadEvent'で' fireEvent() 'を呼び出します。私は間違った道を歩いていますか? – NuCradle

+0

GWT「LoadEvent」は、「このウィジェットのDOM要素がネイティブLOADイベントを引き起こしました」を意味しますが、GXTの「LoadEvent 」は、このローダーのタイプMのデータが使用可能になったことを意味します。 。どちらもあなたが望むものではありません。代わりに、 'AttachEvent'を見て(完了したらハンドラを削除する)、ダイアログが' ShowEvent'を見て、ダイアログが画面に表示されるたびに呼び出すことができます( 'BeforeShowEvent'も考慮しますあなたはあなたの心を変え、それを見せない)。 –

関連する問題