2012-09-25 79 views
1

嗨,我需要一些指導或如何做一個JavaScript庫的包裝指針。如何做一個GWT包裝

我做一個簡單的JavaScript「myTest.js」與函數:

function myFunction(num) 
{ 
    if(num==1){ 
     return "Hello World1!"; 
    }else{ 
     return "bye World2!"; 
    } 
} 

而且叫我簡單的HTML的我:

<html> 
    <head> 
    <script type="text/javascript" SRC="myLib.js"> 

</script> 
    <title>Tutorial: HelloWorld</title> 
    </head> 
    <body> 
    <h1>Example HTML</h1> 
    <input type="button" value="button" onclick="alert(myFunction(1))"> 
    </body> 
</html> 

顯然,這個例子是很容易做的中GWT。

這只是我學習如何做一個gwt包裝的JavaScript文件,以便能夠在GWT中調用該函數。

感謝


好,我需要一個更強大的例子,如果我有這個功能的js文件:

function MyObject() { 
    // properties in config 
    this.displayname = 'First Last'; 
    this.username = '1060'; 
    this.domain = '12.18.34.234'; 
    this.authname = '1060'; 
    this.password = '1060'; 
    this.transport = 'w34s'; 
    } 

和HTML的腳本部分我做了這個電話

var myObj = new MyObject(); 

我該如何在GWT中做這個?

我必須創建類MyObject嗎? 與在JavaScript中顯示的字段?

回答

0

如果你想調用本地JavaScript在GWT你可以在GWT類中定義一個本地方法是這樣的:

private native void test(String argument)/*-{ 
    myFunction(argument); 
}-*/ 

當你從GWT調用該方法測試(「富」),它會調用原生js函數myFunction(「foo」);

0

您必須使用JSNI。請參閱GWT 2.4 here的文檔。

2

要在Java和JavaScript類型之間建立橋樑,請使用GWT的overlay types來創建API包裝層。

比你可以創建一個單獨的module來包含包裝庫並將其鏈接到主模塊。

0

現在你應該使用JSNI,但也有js互操作。 js interop使得事情變得更容易,在2.8版本中即將推出,js interop將是常態,它將被構建到GWT編譯器中。他們說2.7的js互操作性雖然是實驗性的。 here's它的文檔。