2013-05-23 2 views
4

나는 'page'라는 데이터 필드가있는 페이지가 있는데, 그 데이터 필드를 부분의 이름으로 전달할 수 있습니까? 다른 부분)?핸들 바에 부분 이름에 변수를 추가하십시오. (콧수염)

예는 :

  • 페이지가 마크 업을 배치했다 '대시 온'
  • 부분 "사이드 바"의 값을 갖는 '페이지'필드가 또 다른 부분 {{ sidebar-*dashboard-one* }} 어디에 호출 대시 보드 - 하나은 페이지에서 전달되는 변수입니다.
  • 즉, 사이드 바를 필요로하는 모든 페이지에는 '사이드 바 - 대시 보드 - 원', '사이드 바 - 대시 보드 -2'등의 관련 부분이있을 수 있습니다.

답변

0

일반적인 이름으로 부분 이름으로 변수를 전달할 수 없습니다. 두 가지 가능한 솔루션이 있습니다 :

1) 가능한 모든 이름을 알고 있으면 정적 템플릿을 정적으로 생성하여 원하는대로 사용할 수 있습니다.

초기 데이터 :

{ 
    "names": [ 
     { "name": "dashboard-one" }, 
     { "name": "dashboard-two" } 
    ] 
} 

정적 템플릿 :

{{#each names}} 
    \{{#if name.{{name}} }} 
     \{{> sidebar-{{name}} }} 
    \{{/if}} 
{{/each}} 

생산됩니다

{{#if dashboard-one }} 
    {{> sidebar-dashboard-one }} 
{{/if}} 

{{#if dashboard-two }} 
    {{> sidebar-dashboard-two }} 
{{/if}} 

는 그런 다음 템플릿 맥락에서 이름이 '대시 보드 하나를'통과 :

{ "name": "dashboard-one" } 

및 부분 sidebar-dashboard-one이 실행됩니다.

2) 맞춤 도우미를 작성하십시오. 핸들 막대는 내부적으로 메소드 Handlebars.VM.invokePartial을 사용하여 partials를 호출합니다. See, how it works.

관련 문제