I build a simple example: 
https://github.com/lofidewanto/gwt-widget-jsinterop

I also found some answer in StackOverflow but it's all Java based (see the 
README above). What I understood is that the Widget should be called from a 
pure JS (VueJS or whatever JS).

   - Calculator.java 
   
<https://github.com/lofidewanto/gwt-widget-jsinterop/blob/main/src/main/java/com/github/lofi/client/Calculator.java>
 
   -- Composite Widget
   - JS uses the Calculator: testcalculator-nowait.js 
   
<https://github.com/lofidewanto/gwt-widget-jsinterop/blob/main/src/main/java/com/github/lofi/public/testcalculator-nowait.js>

I use ScriptInjector to inject testcalculator-nowait.js 
<https://github.com/lofidewanto/gwt-widget-jsinterop/blob/main/src/main/java/com/github/lofi/public/testcalculator-nowait.js>
. 

If I tried to use this JS testcalculator-withwait.js 
<https://github.com/lofidewanto/gwt-widget-jsinterop/blob/main/src/main/java/com/github/lofi/public/testcalculator-withwait.js>
 directly 
in index.html 
<https://github.com/lofidewanto/gwt-widget-jsinterop/blob/main/src/main/java/com/github/lofi/public/index.html>
 
it seems that it cannot find the Calculator class. I have the feeling that 
the Calculator JsInterop hasn't been loaded but the 
testcalculator-withwait.js already running. Using ScriptInjector makes this 
possible (testcalculator-nowait.js) but I don't think, that this was the 
question.

Maybe Thomas could check, I'm not sure how to "wait" in JS until the 
JsInterop class is loaded... 

Cheers,
Lofi
[email protected] schrieb am Dienstag, 2. März 2021 um 19:36:47 UTC+1:

> I would:
>
>    1. create a new *.gwt.xml with a new EntryPoint that won't launch the 
>    GWT app but instead expose a function (using JsInterop) to "run" your 
> module
>    2. that function would use receive an element ID and use 
>    RootPanel.get(id) to put the GWT UI inside (that's not the only way, but 
>    definitely the easiest); ideally it would also return a function that you 
>    would call from Vue at "unmount", but could instead return the RootPanel 
> so 
>    it could be passed to another function exposed by the module's 
> onModuleLoad.
>    3. the "unmount" callback would simply call 
>    RootPanel.detachNow(rootPanel)
>
> That way, the Vue app could actually load the GWT module immediately, but 
> then only use it by calling its exposed function when it needs to display 
> the GWT module; and when it no longer needs it, it should properly "detach" 
> it.
>
> On Tuesday, March 2, 2021 at 5:09:24 AM UTC+1 [email protected] wrote:
>
>> For example:
>>  I have a vue app and classic gwt application,  The gwt application have 
>> lot of module .
>> but I only want to one module (eg: A query UI) integration  to my vue app 
>> using js
>> How can I done this?
>> Tks.
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit/71e1913d-fb55-4e39-b260-affa32a9be9en%40googlegroups.com.

Reply via email to