2014-01-21 74 views
0

我需要一個JavaScriptObject包含JsArray和一個字符串。 那JsArray應該像普通的GWT的JsArray像push(),pop()等所有功能 但如何創建? 我創造的東西我是什麼意思,但它不工作如何創建一個JsArray作爲JavaScriptObject

public class Tour extends JavaScriptObject { 

protected Tour() { 
    // TODO Auto-generated constructor stub 
} 

public static Tour getInstance(){ 
    return JavaScriptObject.createArray().cast(); 
} 

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

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

public final native JsArray<JavaScriptObject> getArray() /*-{ 
    return this.array; 
}-*/; 

public final native void setJsArray(JsArray<JavaScriptObject> array)/*-{ 
    this.array = array; 
}-*/; 

public final native void push(JavaScriptObject obj)/*-{ 
    this.array.push(obj); 
}-*/; 

public final native int getLength()/*-{ 
    this.array.length; 
}-*/; 

}

回答

1
public class Tour extends JavaScriptObject { 

    protected Tour() { 
    } 

    public static Tour getInstance() { 
     return getInstance(null, null); 
    } 

    public static Tour getInstance(String name) { 
     return getInstance(name, null); 
    } 

    public static native Tour getInstance(String name, JsArray<JavaScriptObject> array) /*-{ 
     return { 
      name : name, 
      array : array || [] 
     }; 
    }-*/; 

    // the rest of your class stays untouched... 

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

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

    public final native JsArray<JavaScriptObject> getArray() /*-{ 
     return this.array; 
    }-*/; 

    public final native void setJsArray(JsArray<JavaScriptObject> array)/*-{ 
     this.array = array; 
    }-*/; 

    public final native void push(JavaScriptObject obj)/*-{ 
     this.array.push(obj); 
    }-*/; 

    public final native int getLength()/*-{ 
     this.array.length; 
    }-*/; 
} 
+1

非常感謝。幫了很多! – Pero

0

的JsArray是(通過擴展它)本身一個JavaScriptObject。 但是JsArray不能保存基於Java/GWT的String對象,因爲它們不是真正的JavaScript字符串。

要讓JsArray包含字符串,請使用JsArrayString。這個處理本地級別的字符串。

JsArrayString jas = JsArrayString.createArray()。cast();

+0

我不是說我的意思是我自己的javascriptobject覆蓋類。 我編輯了這個問題。 – Pero