[Seaside] a problem with a javascript statement
Esteban Lorenzano
estebanlm at gmail.com
Fri Apr 8 15:21:55 UTC 2011
Hi Johan,
Thanks for the response... I think I will go through adding #equals: protocol :)
I also prefer to put the javascript into separated files, but in this case it is a dynamic generated one, with a lot of possible statements (I was just simplifying the example... that's why I cannot use also then:else: :P)
Cheers,
Esteban
El 08/04/2011, a las 12:03p.m., Johan Brichau escribió:
> Hi Esteban,
>
> This should work right out of the box:
>
> (JSStream on: '$(this).val().length == 0')
> then: (html javascript return: false)
> else: (html javascript return: true)
>
> although you might want to shrink that to: (html javascript return: (JSStream on: '$(this).val().length != 0'))
>
> And, indeed, there are some gaps in the javascript DSL. Although I prefer to push as much javascript out to separate files, instead of using strings or the DSL itself.
> We have nevertheless implemented some modest extensions for our own purpose, but if there is interest to seeing the DSL expanded, I would happily contribute them.
>
> For '==' in JS, just add this method:
>
> JSObject>>equals: anObject
> self addDecoration: (JSBinary new operator: '=='; statement: anObject)
>
> Also mind that the #then:else: only accepts a single javascript statement in each branch.
>
> I think the DSL is good to combine JS statements that you really need to generate (such as the jQuery ajax callbacks). For everything else, I use JSStream or external files.
>
> cheers
> Johan
>
> On 08 Apr 2011, at 16:39, Esteban Lorenzano wrote:
>
>> Hi,
>> I want to write this code:
>>
>> function() {
>> if ($(this).val().length == 0) {
>> return false;
>> }
>> return true;
>> }
>>
>> but I want to use seaside javascript dsl to do that...
>> I suppose the code should be something like this:
>>
>> (((html javascript return: false)
>> condition: (html jQuery this find: 'input'; value; access: 'length'; equals: 0)),
>> (html javascript return: true))
>> asFunction
>>
>> the problem is: it does not exists an "#equals:" message (not a greater:, etc. )
>>
>> so, I wonder how you do this using the DSL... is there a way? or I need to add that protocol?
>>
>> thanks,
>> Esteban
>>
>>
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
More information about the seaside
mailing list