Take a look at: http://logji.blogspot.com/2009/09/composable-bindings-in-lift.html
and then: http://logji.blogspot.com/2009/10/composable-bindings-in-lift-part-ii.html Sounds like this could provide a more flexible implementation pattern for your use case. Cheers, Tim On 11 Nov 2009, at 18:21, aw wrote: > > OK, your suggestion definitely makes the snippet code more readable, > but I fear I didn't make my point clear because the snippet code still > is highly coupled with the view layout. > > Imagine that I want to change my view from this: > > <a href="next"> > <span class="name">name</span> > <span class="comment">description</span> > <span class="arrow"/> > </a> > > to this: > > <span class="name">name</span> > <span class="comment">description</span> > <a href="next"> > <span class="arrow"/> > </a> > > This would mean that I need to change my template from: > > <b1:link> > <span class="name"><b2:name/></span> > <span class="comment"><b2:description/></span> > <span class="arrow"/> > </b1:link> > > to this: > > <span class="name"><b:name/></span> > <span class="comment"><b:description/></span> > <b:link> > <span class="arrow"/> > </b:link> > > And then I need to update my code from: > > bind("b1", xhtml", > "link" -> kids => SHtml.link("next", () => clicked(b), > bind("b2", kids, "name" -> b.name.is, "description" -> > b.description.is > ))) > > to something like this: > > bind("b", xhtml", > "name" -> b.name.is, > "description" -> b.description.is, > "link" -> kids => SHtml.link("next", () => clicked(b)) > ))) > > > My complaint is that reorganizing the view is tending to require code > changes at the snippet level. And that just doesn't seem right to me. > > At first, I thought that I could leverage the recursive nature of > snippets. In other words, I thought I could avoid the b1 and b2 > binding keys and simply use b, then when the first round contained > more b variables to bind, it would recurse. Alas, this didn't work > (I'm sorry, but I don't recall the error message). But this was what > I was thinking: > > <b:link> > <span class="name"><b:name/></span> > <span class="comment"><b:description/></span> > <span class="arrow"/> > </b:link> > > or this: > > <span class="name"><b:name/></span> > <span class="comment"><b:description/></span> > <b:link> > <span class="arrow"/> > </b:link> > > and the code would remain this: > > bind("b", xhtml", > "name" -> b.name.is, > "description" -> b.description.is, > "link" -> kids => SHtml.link("next", () => clicked(b)) > ))) > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---