It's a little hard for me to wrap my head around this, but it seems like it should work as long as you're properly updating the widgets val on each call. Have you tried putting in some simple logging statements to ensure that the intended flow of your processing is being honored?
Derek On Sun, Jan 11, 2009 at 6:19 PM, Charles F. Munat <[email protected]> wrote: > > Essentially, the problem I am having, I think, is that SetHtml hard > codes the HTML that will replace the current HTML. I need to use the > HTML returned from the AJAX call to replace the current HTML. > > So I don't think SetHtml is going to work. > > Does this make more sense? Am I on the right track? > > Chas. > > Charles F. Munat wrote: > > Yeah, I found this and have been playing with it, but am sort of stuck. > > What I'm doing looks something like this (but is much more complicated): > > > > def getForm: NodeSeq = { > > val widgets = [List(id,name) of unused widgets] > > > > if (widgets.isEmpty) > > <span>All widgets are in use.</span> > > else > > SHtml.ajaxForm( > > <input type="submit" value="+" class="addButton"/> > > {SHtml.select( > > widgets, > > Empty, > > (id: String) => { > > val w = Model.getReference[Widget](classOf[Widget], id.toLong) > > val t = Model.getReference[Thing](classOf[Thing], thing.id) > > t.widgets.add(w) > > Model.merge(t) > > Model.flush() > > SetHtml("widgetForm", getForm) > > } > > }, ("id", "optionSelector") > > ) > > } > > > > def view(xhtml: NodeSeq): NodeSeq = { > > bind("widgets", xhtml, "addForm" -> getForm) > > } > > > > Then I want to insert it here: > > > > <lift:ThingOps.view> > > <div id="widgetForm"><widgets:addForm/></div> > > </lift:ThingOps.view> > > > > If I replace "getForm" in SetHtml above with <span>Rats!</span>, then it > > works perfectly and when I click the + button the entire form is > > replaced by "Rats!" But I need it to regenerate the form with either one > > fewer widgets in the select *or* the entire form replaced by an "All > > widgets are in use" message. But calling getForm from within getForm > > doesn't work... I get the current form, not the form *after* the widget > > has been added. > > > > I say the real one is more complicated because it also lists the widgets > > with "-" buttons next to them which permits them to be removed from the > > set. Each of these actions also requires the XHTML to be recalculated > > and redisplayed. > > > > Does this make any sense? > > > > Chas. > > > > David Pollak wrote: > >> SetHtml(id: String, stuff: NodeSeq) > >> > >> It's a JsCmd and it replaces the contents of the Elem with the give id > >> on the page with stuff. > >> > >> Is this what you were looking for? > >> > >> On Sun, Jan 11, 2009 at 2:58 PM, Charles F. Munat <[email protected] > >> <mailto:[email protected]>> wrote: > >> > >> > >> Is there a JsCmd for replacing a NodeSeq? I want an AJAX button to > run > >> some code on the server, generate a NodeSeq, and then replace the > >> similar NodeSeq on the page. I'm looking through the commands and I > >> don't see how to do that, except to use Run and then JQuery... > >> > >> Am I missing something? This seems like a common scenario, so I'm > >> thinking it's probably in there. > >> > >> Thanks, > >> Chas. > >> > >> > >> > >> > >> > >> -- > >> Lift, the simply functional web framework http://liftweb.net > >> Collaborative Task Management http://much4.us > >> Follow me: http://twitter.com/dpp > >> Git some: http://github.com/dpp > >> > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
