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
>> > >>>>
>> > >>>
>> > >>>
>> > >
>> >
>> >
>>
>
>

Reply via email to