2012-02-19 7 views
0

パフォーマンスを考慮して、GWTアプリ全体のリクエストに応じて複数のオーバーレイタイプをどのように保存しますか?GWT:グローバルなjavascriptオーバーレイタイプ

+0

あなたはあなたの「javaの」タグ「はjavascriptの」タグであってはならないことを確認していますか? –

+0

@HovercraftFullOfEels私はJavaScriptタグを追加しましたが、GWTの場合はJavaを記述し、GWTをJavaScriptにコンパイルするようにしました。したがって、Javaタグは完全に妥当です。 –

+0

@AdamMihalcin:ありがとう! GWTとJavaScriptの私の無知は私がタグを自分で変更しなかった理由です。 –

答えて

1

私が正しく理解していれば、アプリケーション内のどこからでもオーバーレイタイプを参照したいと思っています。その場合は、public static変数を作成することを検討してください。

例えば、BookというJavaScriptオーバーレイタイプがあるとします。その内部に、グローバルインスタンスを保持する静的変数を作成することができます。後に続いて

public class Book extends JavaScriptObject { 
    public static Book instance; // The global 

    protected Book(){} 

    public final native String getName()/*-{ 
     return this.name; 
    }-*/; 

    public final native void setName(String name)/*-{ 
     this.name = name; 
    }-*/; 
} 

、私たちは私たちが望むどこからそれを参照:

Book.instance = (Book) JavaScriptObject.createObject(); 
Book.instance.setName("How I Sailed the Seven Seas"); 
GWT.log(Book.instance.getName()); 

真実が語られ、これはJavaでどのように任意の「グローバル」変数作品です。オーバーレイタイプも同じように動作します!

Bookクラスの中にinstanceを置くことで魔法が発生しないことに注意してください。あなたは非常に簡単に同じことを行うことができます:

public class FooBar{ 
    public static Book global_book; 
} 

以降:

FooBar.global_book.setName("My Biography") 
関連する問題