2010/5/18 Paul Stanton <p...@mapshed.com.au>:
> Thanks Vassilis,
>
> The key was in the javascript function processReply
>
>   processReply : function(reply)
>   {
>       Tapestry.loadScriptsInReply(reply, function()
>       {
>           // In a multi-zone update, the reply.content may be blank or
> missing.
>
>           reply.content && this.show(reply.content);
>
>           // zones is an object of zone ids and zone content that will be
> present
>           // in a multi-zone update response.
>
>           Object.keys(reply.zones).each(function (zoneId)
>           {
>               var manager = Tapestry.findZoneManagerForZone(zoneId);
>
>               if (manager)
>               {
>                   var zoneContent = reply.zones[zoneId];
>                   manager.show(zoneContent);
>               }
>           });
>       }.bind(this));
>   },
>
>
> I've extracted the body of 'Tapestry.loadScriptsInReply' and called that
> with the parameter 'transport.responseJSON'.
>
> This works well, however it would be good to not have to copy and paste code
> the tapestry.
>
> I will log a jira requesting the body of Tapestry.loadScriptsInReply be
> exposed as its own top level function for adequate re-use.

You're a little late on that, it's already in 5.2 (for other reasons).

>
> Indeed, it would be handy to have a top level function that could detect and
> handle any type of tapestry ajax response.
>
> p.
>
> Vassilis Bekiaris wrote:
>>
>> Hi,
>>
>> in a page I would do the following (not really sure if you may apply this
>> in a component, however I see no reason why you shouldn't be able to do
>> this):
>>
>> 1. Include an eventlink (even if you don't want the ajax update to be
>> invoked by means of clicking the link, include it and hide it with
>> display:none)
>>
>> <t:eventlink t:id="ajaxUpdate" id="ajaxUpdate" zone="ajaxZone1"
>> style="display:none"></t:eventlink>
>> <t:zone t:id="ajaxZone1" id="ajaxZone1">...</t:zone>
>> <t:zone t:id="ajaxZone2" id="ajaxZone2">...</t:zone>
>>
>> 2. If you want to invoke this through javascript use the following
>> javascript statement:
>>
>> $T('ajaxZone1').zoneManager.updateFromURL($('ajaxUpdate').href);
>>
>> I obtain tapestry's zone manager for the zone and invoke updateFromURL
>> using the url formatted by tapestry in the event link.
>>
>> 3. (obviously :)) handle the event in your code just like you do,
>> returning a multi zone update object.
>>
>> Tapestry's js handles the zone updates once the ajax response is received
>> on the client side. This has been working fine for me, you may want to have
>> a look in tapestry.js - the implementation of updateFromURL will show you
>> the next steps tapestry is going through to update the zones on the
>> client-side.
>>
>> Cheers,
>> Vassilis
>>
>>
>> On 18/05/10 10:27, Paul Stanton wrote:
>>>
>>> Hi all,
>>>
>>> I've set up an Ajax.Request to call a listener method in my component.
>>>
>>> The listener method returns a MultiZoneUpdate.
>>>
>>> return new MultiZoneUpdate("myZone", myZone); // this will update more
>>> zones once I get it working
>>>
>>> My question is, what do I have to do in my onComplete (or onSucess)
>>> handler in the Ajax.Request to actually perform the zone updates on the
>>> client?
>>>
>>> Or is there a better method of calling and handling an event listener
>>> which returns a MultiZoneUpdate than Ajax.Request?
>>>
>>> Thanks, p.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to