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

Houve um erro em buscar as fotos depois que criei minha diretiva <minha-foto>

Após criar minha diretiva a aplicação apresentou o seguinte erro e não conseguiu mais importa as fotos do servidor:

Error: [$interpolate:interr] http://errors.angularjs.org/1.3.15/$interpolate/interr?

Essa é apenas a primeira linha do erro, pois erro todo tem um descrição enorme.

5 respostas

Cole o código de erro completo e o da sua diretiva. Blz?

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.

Cleber, confere o caminho e o nome deste arquivo

<script src="js/directives/minhasDiretivas.js"></script>

Aguardo seu retorno.

solução!

O problema esta aqui

 <minha-foto src="{{foto.url}}" alt="{{foto.titulo}}"></minha-foto>

Não é alt, é titulo. Não é src, é url.

Por isso o erro de interpolação.

Funcionou perfeitamente Flavio. Muito obrigado pelo suporte.