Handlebars: como acessar variaveis do contexto pai de dentro de um partial

Suponha que você possui a seguinte estrutura:

{
   "album": {
       "artist": "The Beatles",
       "name": "Please Please Me",
       "tracks": [
           {"name":"I Saw Her Standing There"},
           {"name":"Misery"}
       ]
   }
}

E queira gerar o seguinte html

<ol>  
    <li>The Beatles - I Saw Her Standing There</li>
    <li>The Beatles - Misery</li>
</ol>  

Em Handlebars você pode fazer assim:

{{#with album}}
    <ol>
    {{#each this.tracks}}
        <li>{{../artist}} - {{this.name}}</li>
    {{/each}}
    </ol>
{{/with}}

Porém, se você quiser separar cada item da lista num partial chamado track, tipo:

<li>{{../artist}} - {{this.name}}</li>  

E depois fazer isso:

{{#with album}}
    <ol>
    {{#each this.tracks}}
        {{> track}}
    {{/each}}
    </ol>
{{/with}}

Não vai funcionar porque os partials no handlebars não conseguem acessar o contexto do pai.

A partir da versão v2.0.0-alpha.1 uma maneira de se obter variáveis do contexto do pai é possível, a maneira de se fazer isso então seria:

{{#with album}}
    <ol>
    {{#each this.tracks}}
        {{> track artistName=../artist}}
    {{/each}}
    </ol>
{{/with}}

e o partial

<li>{{artistName}} - {{this.name}}</li>  

Sucesso!


se você gostou deste post e quiser receber novas atualizações deste blog por email, clique aqui

Fabricio Campos Zuardi

Read more posts by this author.