Opa, vamos por partes para você ficar ainda melhor em Angular. O primeiro ponto que quero voltar é o template da diretiva. Lá temos:
<div class="col-md-4 fix-top2 animated slideInUp" ng-transclude >
// omiti o restante do código
</div>
Nela, você usou ng-transclude
. Essa diretiva é usada quando você quer que a diretiva aceite elementos filhos. Por exemplo:
<meus-jobs><h1>Oi</h1></meus-jobs>
Sem o ng-transclude
e a propriedade da diretiva scope.transclude = true
, o <h1>
sumiria. O transclude mantém os elementos filhos. Porém, no seu template da diretiva, você já está colocando um conteúdo, sendo assim, não consigo enxergar a necessidade dessa transclusão. Até aí tudo bem?
Vejamos o código da sua diretiva:
angular.module('minhasDiretivas',[])
.directive('meuJobs', function(){
var ddo = {};
ddo.restrict ="AE";
ddo.scope = {
name: '@',
url: '@',
fields: '@',
views:'@'
};
ddo.templateUrl ='js/diretivas/meujobs.html';
ddo.transclude = true;
return ddo;
});
No escopo privado da diretiva, você esta criando name
, url
, fields
e views
. Porém, em nenhum lugar do template js/diretivas/meujobs.html
você está usando esses valores. Qual sua intenção em passar esses parâmetros?
Outro ponto. No exemplo que você passou aqui da diretiva em uso temos:
<meu-jobs ng-repeat="projeto in projetos.projects"> <img class="img-responsive center-block" src="{{projeto.covers.original}}" alt="{projeto.name}}" />
</meu-jobs>
Nela você está passando uma imagem como filha do <meu-jobs>
(agora acho que compreendo porque você usou transclusão). Porém, essa <img>
deveria estar dentro de meujobs.html
e sua diretiva deveria receber como parâmetro o endereço da imagem.
Ainda em sua diretiva em uso, veja que nela você não passou os parâmetros url, fields, views e name. Ou seja, porque dentro da definição da sua diretiva você está recebendo esses parâmetros que sequer são usados?
Aguardo seu feedback para poder ajudá-lo melhor Carlos.