Componentes e helpers utilizados nas views do Ember podem receber blocos, como é o caso do if
:
O que delimita o início e fim de um blocos são os operadores #
e /
prefixados ao nome do componente.
Há casos de componentes que operam tanto com blocos como na versão sem blocos, como é o caso do link-to
:
Os dois formatos renderizam o seguinte HTML:
Como blocos funcionam nos componentes ?
Vamos fazer um pequeno componente para exemplificar:
Este comando gera os dois arquivos básicos para o funcionamento de um componente:
.js
onde você programa o comportament.hbs
que é o template do componenteVamos focar no segundo. Um novo template de componente possui apenas a instrução yield
:
Esta instrução diz que seu componente pode receber um bloco, e que todo código do bloco será inserido neste trecho do yield
. Confuso ? Exemplo:
Resulta no seguinte HTML:
Repare que o mostra-cliente
foi chamado com #
e /
, ou seja, foi passado um bloco ao componente, que foi renderizado no yield
.
Mas nem sempre seu componente precisa aceitar blocos, portanto é seguro remover o yield
e assim você pode chamar seu componente pela forma simplificada sem passar um bloco: