[Seaside] nested LiveCallbacks
Michel Bany
m.bany at wanadoo.fr
Fri Oct 28 16:18:09 UTC 2005
Juan Burella a écrit :
> Using this version it works in a different way but not
> completely right. When the second list is selected everything works
> fine, but then the first one is selected, it disappears leaving only
> the second and the third visible.
>
I got some new ideas...
See Seaside2.5b8-mb.15
The nested live callbacks work for me with the attached example.
Can you also try with your code ?
Michel.
Something I did not mention in my previous posts: when you are nesting
live callbacks,
the Javascript must execute all the <script> tags produced by the live
callbacks.
This is also part of the new implementation.
-------------- next part --------------
'From Squeak3.7 of ''4 September 2004'' [latest update: #5989] on 28 October 2005 at 6:11:36 pm'!
WAComponent subclass: #NestedLiveCallbackExample
instanceVariableNames: 'country province city'
classVariableNames: ''
poolDictionaries: ''
category: 'SeaComp-Example'!
!NestedLiveCallbackExample methodsFor: 'initialization' stamp: 'mb 10/28/2005 17:52'!
initialize
self country: 'Argentina'.! !
!NestedLiveCallbackExample methodsFor: 'rendering' stamp: 'mb 10/28/2005 17:48'!
renderCitiesOn: aRenderer
aRenderer spanNamed: 'citySelector' with:
[aRenderer
selectFromList: self cityNames
selected: city
callback:[:f | city := f ]
labels: [:ea | ea ]]
! !
!NestedLiveCallbackExample methodsFor: 'rendering' stamp: 'mb 10/28/2005 17:49'!
renderContentOn: aRenderer
aRenderer
selectFromList: #( 'Argentina' 'Aruba' )
selected: country
callback:[:f | self error: 'Should never come here' ]
labels: [:ea | ea ]
liveCallback:
[:anObject :h |
country := anObject.
province := self provinceNames first.
city := self cityNames first.
self renderProvincesOn: h].
self renderProvincesOn: aRenderer.
! !
!NestedLiveCallbackExample methodsFor: 'rendering' stamp: 'mb 10/28/2005 17:49'!
renderProvincesOn: aRenderer
aRenderer spanNamed: 'provinceSelector' with:
[aRenderer
selectFromList: self provinceNames
selected: province
callback:[:f | self error: 'Should never come here' ]
labels: [:ea | ea ]
liveCallback:
[:anObject :h |
province := anObject.
city := self cityNames first.
self renderCitiesOn: h]].
self renderCitiesOn: aRenderer.
! !
!NestedLiveCallbackExample methodsFor: 'accessing' stamp: 'mb 10/28/2005 17:51'!
city: anObject
city := anObject.
! !
!NestedLiveCallbackExample methodsFor: 'accessing' stamp: 'mb 10/28/2005 17:45'!
cityNames
province = 'Oranjestad'
ifTrue: [^#( 'Casibari' 'Bubali') ].
province = 'Santa Cruz'
ifTrue: [^#( 'Arikok' 'Yamonta') ].
province = 'Buenos Aires'
ifTrue: [^#('La Plata' 'Azul')].
province = 'Cordoba'
ifTrue: [^#('Alta Gracia' 'La Falda ')].
^#()
! !
!NestedLiveCallbackExample methodsFor: 'accessing' stamp: 'mb 10/28/2005 17:52'!
country: anObject
country := anObject.
self province: self provinceNames first.
! !
!NestedLiveCallbackExample methodsFor: 'accessing' stamp: 'mb 10/28/2005 17:51'!
province: anObject
province := anObject.
self city: self cityNames first.
! !
!NestedLiveCallbackExample methodsFor: 'accessing' stamp: 'mb 10/28/2005 17:42'!
provinceNames
country = 'Aruba'
ifTrue: [^#('Oranjestad' 'Santa Cruz')].
country = 'Argentina'
ifTrue: [^#( 'Buenos Aires' 'Cordoba')].
^#()
! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!
NestedLiveCallbackExample class
instanceVariableNames: ''!
!NestedLiveCallbackExample class methodsFor: 'as yet unclassified' stamp: 'jmb 10/27/2005 11:34'!
canBeRoot
^true! !
More information about the Seaside
mailing list