[Seaside] something like #callback:value: but for #html: ?
pdebruic at gmail.com
Thu Jun 30 11:22:47 UTC 2011
On 06/29/2011 10:55 PM, Esteban Lorenzano wrote:
> I'm trying to fill an JQAccordion when user opens it, and I think the way to do that is by doing something like this:
> html div
> script: (
> html jQuery new accordion
> active: self selectedIndex - 1;
> autoHeight: false;
> onChangestart: ((html jQuery new
> alias: 'ui';
> access: 'newContent';
> call: 'load' with: (html jQuery ajax
> html: [ :renderer | renderer text: 'TEST' ];
> asFunction: #(event ui)));
> with: [
> html div id: 'header1'; with: 'header1'.
> html div.
> html div id: 'header2'; with: 'header2'.
> html div ]
> this example is working fine, but I'm always rendering 'TEST'. I need to discriminate which content I need to render, so I need the header id value. Using #callback:value I would call something like:
> ((html jQuery ajax
> callback: [ :v | "Some code here" ]
> value: (html jQuery new
> alias: 'ui';
> access: 'newHeader';
> call: 'attr' with: 'id'))
> asFunction: #(event ui))
> but I don't have nothing similar with #html: .
> of course, I can call first a callback who sets the "current header", then make an ajax call, but that's not efficient (two calls instead one).
> so, I would like to have something like #html:value:
> does anybody knows how can I solve this problem?
You can use an anchor for the 'header' rather than a div and have its
onClick event get content for the sibling div. You wouldn't need the
The demo on the jQuery UI Accordion demo page uses anchors as the headers.
Something like this should work:
html jQuery new accordion
active: self selectedIndex - 1;
html anchor onClick ((html jQuery id: 'div1')) load html:[:h | self
renderDiv1ContentOn: h]; with: 'header1'.
html div id: 'div1'.
html anchor onClick ((html jQuery id: 'div2')) load html:[:h | self
renderDiv2ContentOn: h]; with: 'header2'.
html div id: 'div2'. ]
More information about the seaside