Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Simply Lift : Chapter 15 - Dynamically choosing content

원문 : http://simply.liftweb.net/index-Chapter-15.html#toc-Chapter-15


15장
동적으로 컨텐츠 선택하기 (Dynamically choosing content)




15.1 문제점

로직으로부터 완전리 분리된 디자인이 유지되기를 원했습니다. 약간의 변수에 따른 html의 다른 조각들을 로드하는 페이지를 가지고 있고 또한 html의 새로운 조각을 로드할 ajax 코드를 가지고 있습니다. 지금까지 이 페이지는 어떤 html이 로드되어야 하는지 결정하는 로직을 가진 하나의 스니펫만을 사용합니다. 그래서 여기서 어떻게 스니펫이 데이터에 바인딩 될 디자인만 있는 html조각을 가져야 하는가에 대한 질문이 있습니다.




15.2 해결책

스니펫은 제귀적으로 평가됩니다... 이것은 다른 스니펫을 담고 있는 스니펫으로부터 마크업을 리턴할 수 있다는 것을 의미합니다.
주목해야할 다른 것은 <lift:embed> 스니펫(9.13 참고)입니다.

두가지를 결합합니다:
메인 페이지:

<html><body> Stuff here
<div class="lift:ChooseBehavior">Different behavior will go here</div>
</body></html>

스니펫:

object ChooseBehavior {
   def render = someState match {
      case ShowData => <lift:embed what="_showData" />
      case EditData => <lift:embed what="_editData" />
      case AjaxThing => <lift:embed what="_ajaxThing" />
   }
}

그 다음 여러분의 디자이너는 오직 메인페이지와 각각의 템플릿들만을 수정할 필요가 있고 여러분이 그것들을 함께 작성합니다.
2011/03/15 01:19 2011/03/15 01:19