Why not something like:
<div id="all_todos">
<lift:TD.list all_id="all_todos">
...
</lift:TD.list>
</div>
Br's,
Marius
On Dec 23, 11:46 pm, Adam Warski <[email protected]> wrote:
> Hello,
>
> just a note to the snippets written in the tutorial. The elements of the todo
> list, when changed (e.g. the "done" checkbox), submit and redraw the list.
> The code for that is (Listing 17):
>
> def list(html: NodeSeq) = {
> val id = S.attr("all_id").open_!
>
> def inner(): NodeSeq = {
> def reDraw() = SetHtml(id, inner())
>
> bind("todo", html,
> "exclude" ->
> ajaxCheckbox(QueryNotDone, v => {QueryNotDone(v); reDraw}),
> "list" -> doList(reDraw) _)
> }
>
> inner()
>
> }
>
> And the corresponding template:
>
> <lift:TD.list all_id="all_todos">
> <div id="all_todos">
> <!-- proper list -->
> </div>
> </lift:TD.list>
>
> As SetHtml sets the children of the element with the specified id, after one
> change of the checkbox and one ajax call, there will be a <div
> id="all_todos"> inside the original <div id="all_todos"> (as we set the
> children of the original element to be the nodes passed to the snippet). So
> you end up with:
>
> <lift:TD.list all_id="all_todos">
> <div id="all_todos">
> <div id="all_todos">
> <!-- proper list -->
> </div>
> </div>
> </lift:TD.list>
>
> Subsequent calls don't produce any more divs, as the children of the first
> div with id "all_todos" get replaced. However, I think it's not too "clean"
> to produce markup like that.
> The solution I think would be to (somehow) strip the outer div of the html
> NodeSeq and use that in the ajax reDraw method, instead of capturing the
> original html with a closure.
> But probably Lift gurus have a better solution :).
>
> --
> Adam
--
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.