Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Angular 1 - Diretivas > Transclude

Duas dúvidas:

1) Por que usar transclude e não incluir a imagem diretamente na diretiva, passando o atributo foto, ou seja, qual a vantagem do transclude?

<meu-painel ng-repeat="foto in fotos" titulo="{{foto.titulo}}" foto="{{foto.url}}"></meu-painel>

2) Podemos ter mais de um elemento filho, ou seja, mais de um transclude?

Obrigado.

5 respostas
solução!

Boa tarde, Rodrigo! Tudo bem, cara? =)

A utilização do ng-transclude se deve a dois fatores:

  1. Usando dessa forma, podemos usar o painel para outras coisas se desejarmos. Se optarmos por passar como um atributo, como você sugeriu, estamos "forçando" um painel de fotos, sacou?

  2. Aprender. Rs... =)

Respondendo a sua segunda pergunta... Sim, é possível ter vários transcludes, mas somente a partir da versão 1.5, se não me engano. =)

Espero ter ajudado!

Abraço e bons estudos,

Fábio

Se você fizer isso matou o seu painel! Ele não poderá ser utilizado em outros lugares, por exemplo, para exibir um formulário ou algo parecido.

O princípio do Angular é a reutilização de componentes.

Legal, então essa opção seria a de ter um possível genérico, se eu quisesse um "painel de fotos apenas", acho que seria melhor ignorar o transclude. :-)

Muito obrigado pelas respostas.

Isso! Se fosse painel só de fotos, pode passar o endereço da foto como parâmetro. Sem problema.

Só não esqueça de marcar uma das respostas como solução :)