我正在嘗試將自定義JavaScript庫與我的SmartGWT項目集成。通過javascript在構造函數中創建的SmartGWT/GWT訪問div
我有一個通過點擊按鈕,因此在Java代碼中動態加載我有類似如下的僞代碼我的網頁方面:
button . onClick {
contextArea = new contextAreaTypeA()
}
所以我contextAreaTypeA創建並在構造函數中我想創建一系列div元素,爲它們分配ID,然後在自定義庫中調用一個函數,該函數將內容加載到這些div中。
SmartGWT擺脫了在頁面中的任何元素上獲取ID或設置ID的任何方式,以創建元素上的ID,您可以創建自己的小部件並覆蓋getInnerHtml
或創建類似HTMLFlow和添加內容像myflow.setContent('<div id="myID" ></div>');
這是我這樣做的方式。
我的問題是,在構造函數中這樣做意味着,當我來調用我的自定義JavaScript函數,它需要一個ID,我創建這個div似乎並沒有附加到DOM,所以我總是得到一個空指針。
由於我的模塊和文檔已經加載,並且這個內容被動態添加,所以我無法調用文檔就緒或onModuleLoad,那麼如何以及何時應該檢測我的div的負載以及何時可以安全訪問來自JSNI調用的div?我已經嘗試了添加附加處理程序(他們似乎從未被調用),我已經嘗試添加繪製處理程序到HTMLFlow,但它們似乎被調用後,其繪製的htmlflow股利但之前它實際上是繪製的內容。我曾嘗試調用HTMLFlow()上的重繪,但這甚至不會調用onDraw方法。
我不知道如何將這個庫與我的SmartGWT集成在一起,如果任何人都可以提出更好的(或任何)方法來做到這一點,那就太棒了。
問題在於onAttach似乎從未被SmartGWT小部件解僱。例如,當附加HTMLFlow時,onAttach方法不會被觸發。我不知道爲什麼。其次,附加意味着它將被附加,但不一定是它的內容。 –
奇怪。對於GWT調用'super.onAttach()'意味着附加我和所有的孩子。 –
你有沒有嘗試重寫'onDraw()'? –