Diretiva
angular.module('minhasDiretivas', [])
.directive('meuPainel', function() {
var ddo = {};
ddo.restrict = "AE";
ddo.transclude = true;
ddo.scope = {
titulo: '@'
};
ddo.templateUrl = 'js/directives/meu-painel.html';
return ddo;
})
.directive('minhaFoto', function() {
var ddo = {};
ddo.restrict = "AE";
ddo.scope = {
titulo: '@',
url: '@'
};
ddo.template = '<img class="img-responsive center-block" src="{{url}}" alt="{{titulo}}">';
return ddo;
});
Controler:
angular.module('alurapic').controller('FotosController', function($scope, $http) {
$scope.fotos = [];
$scope.filtro = '';
$http.get('/v1/fotos')
.success(function(fotos) {
$scope.fotos = fotos;
})
.error(function(erro) {
console.log(erro);
});
});
Main:
angular.module('alurapic', ['minhasDiretivas','ngAnimate']);
Index.html
<!-- public/index.html -->
<!DOCTYPE html>
<html lang="pt-br" ng-app="alurapic">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Alurapic</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<link rel="stylesheet" href="css/efeito.css">
<script src="js/lib/angular.min.js"></script>
<script src="js/lib/angular-animate.min.js"></script>
<script src="js/main.js"></script>
<script src="js/controllers/fotos-controller.js"></script>
<script src="js/directives/minhasDiretivas.js"></script>
</head>
<body ng-controller="FotosController">
<div class="container">
<div class="jumbotron">
<h1 class="text-center">Alurapic</h1>
</div>
<div class="row">
<div class="col-md-12">
<form>
<input class="form-control" placeholder="filtrar pelo titulo" ng-model="filtro" ng-model-options="{debounce : 500}">
</form>
</div><!--fim colm-md-12 -->
</div><!-- fim do row-->
<div class="row">
<meu-painel class="col-md-2 painel-animado" ng-repeat="foto in fotos | filter : {titulo:filtro}" titulo="{{foto.titulo}}">
<minha-foto src="{{foto.url}}" alt="{{foto.titulo}}"></minha-foto>
</meu-painel>
</div> <!-- fim do row-->
</div><!-- fim container -->
</body>
</html>
Não estou conseguindo postar o erro todo, provavelmente seja por causa do tamanho.