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
-~----------~----~----~----~------~----~------~--~---