[Seaside] JQuery load question

Sven Van Caekenberghe sven at stfx.eu
Mon May 19 13:29:58 UTC 2014


On 19 May 2014, at 15:16, jtuchel at objektfabrik.de wrote:

> My snippet is at least syntactically correct with a closing bracket ;-)
> 
> (html jQuery ajax
>    script: [:s | myModel doSomething];
>    onComplete: [:s|  s << ((s jQuery id: #foo) value: myModel displayString])
> 
> One thing I may have overseen is that the question I am raising is probably only relevant if #doSomething in has any influence on what #displayString actually looks like. So as long as displayString is not influenced by #doSomething, Johan's solution is perfect.

Yes, #displayString is dynamic and changes as a result of #doSomething.
I stumbled upon #onComplete: as well, but could not figure out how to use it...

This whole area is a bit special: when you see solutions (or presentations about this) it all looks beautiful and elegant, and you think you understand it, but when you have to change it you get so easily stuck, frustrating.

> ... or I am not understanding something, which is very well possible
> 
> Joachim
> 
> 
> Am 19.05.14 15:12, schrieb jtuchel at objektfabrik.de:
>> Hi Johan,
>> 
>> your suggestion looks very similar to what I had in mind, apart from the fact that you don't use onComplete:. So I suggest there is something to learn in this for me. I thought I'd have to use (the deprecated) onComplete: block with the Ajax object just to make sure the ajax callback is finished before I update the input field. So using your code and my idea it would look more like this:
>> 
>> 
>> (html jQuery ajax
>>    script: [:s | myModel doSomething];
>>    onComplete: [:s|  s << ((s jQuery id: #foo) value: myModel displayString)
>> 
>> (I just edited your code, there might be typos or errors in it).
>> 
>> So I'd be interested in your thoughts on this since I am still a very early stage learner in this area....
>> 
>> Joachim
>> 
>> 
>> Am 19.05.14 15:06, schrieb Johan Brichau:
>>> Hi Sven,
>>> 
>>> In theory, you can still use load and render the entire input field again.
>>> But you are right that setting the value of the input field is a better approach because replacing the entire field often messes with the keyboard focus.
>>> 
>>> What you need is a script callback:
>>> 
>>> (html jQuery ajax script: [:s | myModel doSomething. s << ((s jQuery id: #foo) value: myModel displayString)]
>>> 
>>> I hope this is what you were looking for.
>>> 
>>> Johan
>>> 
>>> On 19 May 2014, at 14:59, Sven Van Caekenberghe <sven at stfx.eu> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I had some code that worked fine using JQuery's load functionality:
>>>> 
>>>> html div id: #foo
>>>> 
>>>> html button
>>>>  bePush;
>>>>  onClick: ((html jQuery id: #foo) load html: [ :h |
>>>>    myModel doSomething.
>>>>    h render: myModel displayString ]);
>>>>  with: 'Do Something'
>>>> 
>>>> Now, I switched #foo to a form input:
>>>> 
>>>> html textInput id: #foo
>>>> 
>>>> But then I should use #value: and not replace the HTML so I can't use load anymore.
>>>> 
>>>> I don't seem to be able to write this but I am a real beginner here. Anyone ?
>>>> 
>>>> Thx,
>>>> 
>>>> Sven
>>>> 
>>>> PS: the data coming back is just a string, not HTML.
>>>> 
>>>> _______________________________________________
>>>> 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
>>> 
>> 
>> 
> 
> 
> -- 
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel          mailto:jtuchel at objektfabrik.de
> Fliederweg 1                         http://www.objektfabrik.de
> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
> 
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside



More information about the seaside mailing list