Beware using JsArray<Double>, instead use JsArray<JsNumber>, see https://github.com/google/elemental2/issues/28.
A third option, with elemental2-core, rather than explicitly copying the array, ask the browser to do it for you with slice(). First cast the array to JsArray<JsNumber>, then slice it to get a copy of its contents, without the expandos.
JsArray<JsNumber> nodesJsArray = Js.cast(nodes);
JsNumber[] noExtraProperties = nodesJsArray.slice();
This can be handy when passing the int[] to something which refuses to handle extraneous properties, like window.postMessage. Yes, it is confusing that it appears you actually end up with a Java array, but it will not have those extra properties in this case.
On Tuesday, December 19, 2017 at 5:02:48 AM UTC-6, cesar paulo alves wrote:
-- A third option, with elemental2-core, rather than explicitly copying the array, ask the browser to do it for you with slice(). First cast the array to JsArray<JsNumber>, then slice it to get a copy of its contents, without the expandos.
JsArray<JsNumber> nodesJsArray = Js.cast(nodes);
JsNumber[] noExtraProperties = nodesJsArray.slice();
This can be handy when passing the int[] to something which refuses to handle extraneous properties, like window.postMessage. Yes, it is confusing that it appears you actually end up with a Java array, but it will not have those extra properties in this case.
On Tuesday, December 19, 2017 at 5:02:48 AM UTC-6, cesar paulo alves wrote:
Ok guys, so I apologize, after a few tests I realized something, as Thomas said about the js lib should't be reading the content, I went digger and realized that the problem was not on the expando properties but the name of the nodeSet array... The js looked for a "nodeSet" array and I was passing it as "nodeSets" array. Very sad (I'm not good with javascript). Thanks for all your help Vassills and Thomas.I switched my code as Vassils as suggested and could find the bug(me) because of what Thomas said. Thanks a lot and sorry for taking your time.Merry Christmas to all of you.Cheers,César Alves
terça-feira, 19 de Dezembro de 2017 às 07:18:00 UTC, cesar paulo alves escreveu:Hello guys, so I'm getting crazy with this.I need to inject a java array inside a javascript library.The problem is that the Js library will iterate over an integer array, and if the element is not an integer it exits the function.When I create the integer array and pass it to plain javascript array, for some reason it carries garbage inside, I already tried everything with no success.So this is my java nodeset (https://pastebin.com/AdJqj80p) I'm using the gwt-interop-utils -> https
://github.com/GWTReact/gwt- interop-utils/blob/master/src/ gwt/interop/utils/client/ plainobjects/JsPlainObj.java
And when I inspect the javascript object in the browser you can see it has lots of garbage, and I cant clean it. See the nodes array I have (_clazz_0_g$,__
elementTypeCategory$,_ elementTypeId$"......).
And when I do the same with Js I don't have this garbage (obvious).
I already used the JsArray and everything, but no luck =/.
Do you have any Idea how to have a plain javascript array with jsInterop?
Thanks a lot.
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 google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment