[Seaside] Changing out components

Norbert Hartl norbert at hartl.name
Thu Oct 27 17:10:24 UTC 2011


Am 27.10.2011 um 17:30 schrieb Agamemnon:

> Lukas (or anyone else with an answer),
> 
> I hate to bother you too much but while I understand conceptually your
> suggestions I'm having a hard time implementing it.  Here's what I have.
> 
> RootComponent>> initialize
>        super initialize.
> 	self menu ifNil: [self menu: MenuView new.].
> 	self content ifNil: [self content: FamilyView new].
> 	self subcomponent ifNil: [self subcomponent: FamilyEdit new].
> 	self menu
> 		viewFamily: [self content: FamilyView new];
> 		viewMember: [self content: MemberView new].
> 
> MenuView>> renderContentOn: html
> 	html div
> 		class: 'menu-container';
> 		with: [
> 			html anchor
> 				callback: [self viewFamily.];
> 				with: 'Family'.
> 			html break.
> 			html anchor
> 				callback: [self viewMember];
> 				with: 'Member'].
> 
> This isn't working but I'm not sure how to change it.  I also can't find any
> help online for passing blocks around in Smalltalk.  I obviously need the
> "self" in the block to reference the "RootComponent" even when executing in
> the "MenuView" but I'm not sure that is happening or how to get it to
> happen.  I can get this to work easily by removing the MenuView altogether
> and placing that code in the RootComponent but that doesn't seem to be a
> very modular way of doing things.
> 

You need to execute the block. Try

html anchor
	callback: [self viewFamily value ];
	with: 'Family'.

Norbert



More information about the seaside mailing list