[Seaside] #call without #answer
Lukas Renggli
renggli at gmail.com
Thu Dec 17 18:26:19 UTC 2009
If you send #home before you do the next #show:/#call: all delegations
are removed.
Lukas
2009/12/17 Nick Ager <nick.ager at gmail.com>:
> Hi,
>
> I have an application that has a body section, where the body section
> might be one of many components.For example:
>
> TemplateComponent
> - HeaderComponent
> - BodyComponent - one of BodyOne | BodyTwo | etc components.
> - FooterComponent
>
> The question is whether to use #call:/#show: to change the
> BodyComponent *or* use Announcements to set a different component in
> TemplateComponent which then subsequently rendered in place of the
> BodyComponent?
> This question has been raised a few times before [1],[2],[3], however
> the answers given didn't help me understand what happens when a
> component uses #call:/#show: without the corresponding #answer:. My
> concern is that the stack of AnswerHandlers/Delegates increases for
> each #show/#call without the corresponding #answer. I built a simple
> app to try to understand what's going and it appears that the stack
> grows for each #show/#call. I click on 'another component' anchor and
> as expected the #show: method results in a new component being
> displayed. Clicking 'another component' repeatedly and then
> subsequently clicking on the 'answer' anchor results in the previous
> component being revealed all the way back to the starting component.
> My conclusion is that it's *bad* to use #call:/#show: without the
> corresponding #answer: as a AnswerHandlers/Delegates list is
> increasing without items being removed. OR have I missed something?
>
> Thanks
>
> Nick
>
> --
>
> WAComponent subclass: #TestMultipleShows
> instanceVariableNames: 'theDisplayComponent'
>
> children
> ^ Array with: theDisplayComponent
>
> initialize
> super initialize.
> theDisplayComponent := self randomDisplayComponent.
>
> randomDisplayComponent
> ^ TestMultipleShowsComponent value: 1000 atRandom.
>
> renderContentOn: html
> html div: [html render: theDisplayComponent].
> html anchor callback: [theDisplayComponent show: self
> randomDisplayComponent]; with: 'another component'
> ---
>
> WAComponent subclass: #TestMultipleShowsComponent
> instanceVariableNames: 'value'
>
> renderContentOn: html
> html div: value.
> html anchor callback: [self answer: true]; with: 'answer'.! !
>
> value: aValue
> value := aValue! !
>
> #TestMultipleShowsComponent class>>value: aValue
> ^ self new value: aValue.
>
>
> [1] http://lists.squeakfoundation.org/pipermail/seaside/2008-April/017575.html
> [2] http://lists.squeakfoundation.org/pipermail/seaside/2007-January/010298.html
> [3] http://lists.squeakfoundation.org/pipermail/seaside/2003-September/002142.html
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
--
Lukas Renggli
http://www.lukas-renggli.ch
More information about the seaside
mailing list