[Seaside] Appending to list of model objects & updating (sub)component list with scriptaculous / Ajax

itsme213 itsme213 at hotmail.com
Fri Jul 28 07:29:33 UTC 2006


I have an SUComponent subclass whose domain object contains a list of
Things. The SUComponent contains a list of other subcomponents in an
OrderedCollection instance variable #subViews, each subcomponent on 1 Thing.
Each subcomponent renders an InPlaceEditor.

I want to use Ajax to add Things to the domain list and update the
subcomponent list. Below is the #renderContentOn: for the SUComponent.

renderContentOn: html
html div: [
 html div
  id: 'ID1';
  with: [
   self renderSummaryOn: html.    " simply renders -- We Have <N> Things"
   self subViews do: [ : sv | html render: sv ]
    " renders an InPlaceEditor on each Thing; works until '++' below".
   ].
 html anchor
  onClick: (
   html ajax
    id: 'ID1';
    callback: [ :renderer |
     | newThing |
     newThing := self model addThing: 'a new one'.
     subViews add: (SubView new thing: newThing).
     self renderSummaryOn: renderer.
     self subViews do: [ :sv | renderer render: sv ]
     ]
    );
  with: '++'.
 ].


Almost works, except  that after pressing the '++':

(a) the last added Thing does not have the snippet of Javascript code that
the others do:
Ajax.InPlaceEditor('id15','http://localhost:8080/seaside/dental',{callback:function(){return
['_s=xzNubmhAYkkRhziT','_k=Mbyouyhq','13','14='+escape(arguments[1])].join('&')},cancelText:'cancel'})}

(b) the InPlaceEditors of the preceding Things no longer work.

What am I doing wrong?

Thanks in advance!





More information about the Seaside mailing list