We're doing something like this in event handlers to perform callbacks void onSetupDialog( @RequestParameter( "params" ) JSONObject json ) { initialLoad = false;
extractParams( json ); ajaxResponseRenderer.addRender( "linkDialogModal", ( ( org.apache.tapestry5.runtime.Component ) linkDialogModal ) .getComponentResources().getBody() ); if( linkFields ) // link text in the text field to the address field { ajaxResponseRenderer.addCallback( new JavaScriptCallback() { @Override public void run( JavaScriptSupport javascriptSupport ) { javascriptSupport.require( "components/editor/link-dialog" ) .invoke( "linkFields" ).with( addressField.getClientId(), linkTextField.getClientId() ); } } ); } } On Mon, Nov 17, 2014 at 10:15 AM, Chris Poulsen <mailingl...@nesluop.dk> wrote: > You are probably asking for trouble if you try to misuse "initializers" in > this way (which also explains why two identical init statements results in > only one being executed) > > -- > Chris > > On Mon, Nov 17, 2014 at 8:45 AM, Charlouze <m...@charlouze.com> wrote: > >> Geoff, >> >> AFAIK, JavascriptSupport is only available at render time and ajax render >> doesn't start until after your event handler returns something. I think >> it's because tapestry doesn't know what will need to be rendered yet. >> >> For your second question, I think you can achieve what you want if you >> pass >> arguments to your invoke : >> >> javaScriptSupport.require("components/MyTimer").invoke(" >> showTimer").with(true); >> >> It may be a nasty workaround but it works ;) >> >> Charles. >> >> 2014-11-17 7:48 GMT+01:00 Geoff Callender < >> geoff.callender.jumpst...@gmail.com>: >> >> > Chris, It looks like the "rule of thumb" that I stated was wrong. I've >> > just used JavaScriptSupport#require in some AJAX event handlers. >> > >> > Can someone explain under what circumstances we have to use >> > AjaxResponseRenderer#addCallback instead of JavaScriptSupport#require ? >> > >> > Is it something to do with queueing requests? For example I noticed a >> > limitation of using require. This... >> > >> > >> > javaScriptSupport.require("components/MyTimer").invoke("showTimer"); >> > >> > javaScriptSupport.require("components/MyTimer").invoke("hideTimer"); >> > >> > javaScriptSupport.require("components/MyTimer").invoke("showTimer"); >> > >> > ...resulted in only 2 invocations in the response to the client... >> > >> > { >> > "_tapestry" : { >> > "inits" : [ >> > "components/MyTimer:showTimer", >> > "components/MyTimer:hideTimer" >> > ] >> > } >> > } >> > >> > Geoff >> > >> > >> > On 14 Nov 2014, at 3:23 pm, Geoff Callender < >> > geoff.callender.jumpst...@gmail.com> wrote: >> > >> > > I don't think so. I believe the rule of thumb is to use >> > JavaScriptSupport during render, and use an AJAX callback during partial >> > page render. >> > > >> > > IIRC, the JavaScriptSupport environmental is not available when you're >> > handling an AJAX component event request. >> > > >> > > On 13 Nov 2014, at 6:08 pm, Chris Poulsen <mailingl...@nesluop.dk> >> > wrote: >> > > >> > >> can't you just use javascriptsupport to require and invoke your js >> > module >> > >> function? >> > >> >> > >> -- >> > >> Chris >> > >> >> > >> On Thu, Nov 13, 2014 at 6:34 AM, Geoff Callender < >> > >> geoff.callender.jumpst...@gmail.com> wrote: >> > >> >> > >>> Have you had a look at these two: >> > >>> >> > >>> >> > >>> >> > >> http://jumpstart.doublenegative.com.au/jumpstart7/examples/javascript/modal/1 >> > >>> >> > >>> >> > >> http://jumpstart.doublenegative.com.au/jumpstart7/examples/javascript/reusablemodal/1 >> > >>> >> > >>> Do they fit your scenario? >> > >>> >> > >>> On 13 Nov 2014, at 3:40 pm, Paul Stanton <pa...@mapshed.com.au> >> wrote: >> > >>> >> > >>>> Hi Geoff, >> > >>>> >> > >>>> I have found your examples invaluable in learning some of the >> basics >> > of >> > >>> this (and other) concepts. I can't thank you enough >> > >>>> >> > >>>> .. the only thing I can see is missing currently is the example I >> > asked >> > >>> about in the previous mail: >> > >>>> >> > >>>> Basically, how do I interact with a js module instance after it is >> > >>> created? >> > >>>> >> > >>>> pretend some server-side state changes between afterRender and >> > >>> onSomeEvent, and the client needs to react accordingly. >> > >>>> >> > >>>> jss.addScript is deprecated, so I "shouldn't" be telling the >> client to >> > >>> execute script apparently... >> > >>>> >> > >>>> cheers, p. >> > >>>> >> > >>>> On 13/11/2014 2:36 PM, Geoff Callender wrote: >> > >>>>> do these examples cover the situations you are describing? >> > >>>> >> > >>>> >> > >>>> >> --------------------------------------------------------------------- >> > >>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> > >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >> > >>>> >> > >>> >> > >>> >> > > >> > >> > >> > >