On 8 feb. 2012, at 16:01, Emond Papegaaij <[email protected]> wrote:
> In Wicket 6, onDomReady and onLoad scripts are merged into one big script in
> the ResourceAggregator. This is to prevent many script tags, all with
> $(document).ready(function(){...}) (or the wicket equivalent). This merging
> is
> only done for non-AJAX requests, to preserve the separate evaluates. Removing
> this check, will merge all evals into one.
>
> One side note, the {}s are not added yet.
>
I'm not sure if this was implemented already, but javascript blocks do not
limit the scope of variables. See e.g. Crockford
http://javascript.crockford.com/code.html
The only way to limit scope is to use functions, according to this document.
Cheers, Frank
> Emond
>
> On Wednesday 08 February 2012 16:54:17 Martin Grigorov wrote:
>> On Wed, Feb 8, 2012 at 4:50 PM, Emond Papegaaij
>>
>> <[email protected]> wrote:
>>> This is very easy to accomplish in 6.0. You only have to delete the code
>>> that keeps the scripts separate when AJAX :). I can fix this, if you
>>> want?
>> I think we talk about different things.
>> I talk about Ajax response:
>> <ajax-response>
>> <evaluate> someJS1();</evaluate>
>> <evaluate> someJS2();</evaluate>
>> <evaluate> someJS3();</evaluate>
>> <component id="someId"><div>new content</div>
>> </ajax-request>
>>
>>> Emond
>>>
>>> On Wednesday 08 February 2012 16:44:14 Martin Grigorov wrote:
>>>> On Wed, Feb 8, 2012 at 4:33 PM, Bertrand Guay-Paquet
>>>>
>>>> <[email protected]> wrote:
>>>>> Hi,
>>>>>
>>>>> Merging multiple evaluates together will change the scope of some
>>>>> variables. The variables in the scope of an evaluate block would carry
>>>>> on
>>>>> in the following evaluate blocks. This could however be mitigated by
>>>>> wrapping each evaluate block in its own function.
>>>>
>>>> True.
>>>> Wrapping them in {} should be enough to prevent this problem.
>>>>
>>>>> Bertrand
>>>>>
>>>>> On 08/02/2012 8:24 AM, Martin Grigorov wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Do you imagine a use case in which several<evaluate>s in
>>>>>> <ajax-response> should be executed separately (one after another) as
>>>>>> it is now ?
>>>>>> Each<evaluate> (and<priority-evaluate>) is executed in an eval() in
>>>>>> wicket-ajax.js. As we all know eval() is slow. As an optimization I
>>>>>> think we can merge all<evaluate>s in one (at server side) and eval
>>>>>> them all together. The only drawback I see is that error reporting
>>>>>> will be worse because the exception message will say "there is an
>>>>>> error in 'all JS in one<evaluate> here' "
>