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

Não apareceu nada nas diretivas

<!-- 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">
        <script src="js/lib/angular.min.js"></script>
        <script src="js/main.js"></script>
        <script src="js/controllers/fotos-controller.js"></script>
        <script src="js/directives/minhas-diretivas.js"></script>
    </head>
    <body ng-controller="FotosController">
        <div class="container">
            <div class="jumbotron">
                <h1 class="text-center">Alurapic</h1>
            </div>
            <div class="row">
                <meu-painel ng-repeat="foto in fotos" titulo="{{foto.titulo}}">
                    <img class="img-responsive center-block" src="{{foto.url}}" alt="{{foto.titulo}}">
                </meu-painel>
            </div><!-- fim row -->
        </div><!-- fim container -->
    </body>
</html>
angular.module('minhasDiretivas', [])
    .directive('meuPainel', function() {

        var ddo = {};

        ddo.restrict = "AE";

        ddo.scope = {
            titulo: '@'
        };

        ddo.template = 
                '<div class="panel panel-default">'
            +   '   <div class="panel-heading">'
            +   '        <h3 class="panel-title text-center">{{titulo}}</h3> '
            +   '   </div>'
            +   '   <div class="panel-body">'
            +   '   </div>'
            +   '</div>'

        return ddo;
    });
angular.module('alurapic', ['minhasDiretivas']);
37 respostas

Oi Roger!

Não aparece porque faltou o mecanismo de transclude que mostro no vídeo.

Já coloquei mesmo assim não está dando certo professor



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;
    });

Botou no template da diretiva também ? Cole o código do template.


<div class="panel panel-default">
    <div class="panel-heading">
        <h3 class="panel-title text-center">{{titulo}}</h3>
    </div>
    <div class="panel-body" ng-transclude>
    </div>
</div>

O titulo do painel sai? Salvou o arquivo de template no lugar certo? Olhou console chrome por mensagem erro?

Aguardo seu retorno.

Não aparece nada só o titulo com jumbtron

no console aparece isso

DevTools failed to parse SourceMap: http://localhost:3000/js/lib/angular.min.js.map

salvei na pasta directives

Você importou diretiva corretamente em index, o caminho? Fica tranquilo que mais de 5000 alunos já passaram dessa parte sem problema algum. Vamos descobrir.

Aliás, você esta acessando a app pelo server, certo?

<!-- 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"/>
        <script src="js/lib/angular.min.js"></script>
        <script src="js/main.js"></script>
        <script src="js/controllers/fotos-controller.js"></script>
        <script src="js/directives/minhas-diretivas.js"></script>
    </head>
    <body ng-controller="FotosController">
        <div class="container">
            <div class="jumbotron">
                <h1 class="text-center">Alurapic</h1>
            </div>
            <div class="row">
                <meu-painel ng-repeat="foto in fotos" titulo="{{foto.titulo}}">
                    <img class="img-responsive center-block" src="{{foto.url}}" alt="{{foto.titulo}}">
                </meu-painel>
            </div><!-- fim row -->
        </div><!-- fim container -->
    </body>
</html>

O caminho que esta no seu html condiz com o local no qual o arquivo foi salvo? Você esta acessando pelo servidor? Localhost: 3000?

O servidr está ativo já reiniciei tbm pra ver se dava certo

root@debian:/home/roger/Área de trabalho/alurapic# npm start

alurapic@1.0.0 start /home/roger/Área de trabalho/alurapic node server.js

Banco data.db pronto para uso Servidor estutando na porta: 3000

troquei de navegador tbm

Eu vou descobrir o que é. Quando nenhum erro ocorre e a diretiva não é exibida é porque não foi registrada dai o Angular ignora a diretiva. Por isso da uma checada nos caminhos das tags scripts com o arquivo físico, se são iguais.

Mostre o código do controller também.

Qual endereço vc esta acessando no seu navegador ?

endereço http://localhost:3000/

angular.module('alurapic').controller('FotosController',function($scope,$http) {

    $scope.foto = [];
    // var promise = $http.get('v1/fotos');
    // promise.then(function (retorno) {
    //     $scope.foto = retorno.data;
    // }).catch(function(error){
    //     console.log(error);
    // });
    $http.get('v1/fotos')
    .success(function (fotos) {
        $scope.foto = fotos;
    });
});
angular.module('alurapic', ['minhasDiretivas']);

Deixa professor eu pulo essa etapa e baixo o seu projeto poisjá tentamos de tudo

Não não! Eu preciso descobrir! Pode acontecer com você e precisamos saber o que acontece.

............

Veio sem o arquivo

ok deu poblema ao enviar já estou solucionando

https://drive.google.com/open?id=0B8LvVun3i3McNlp3eWNOM0pjRVE coloquei no google drive todo o projeto falta uns arquivos entrar no driver está quase mais o link está ai

falta 3 minutos

pra subir tudo

tudo na nuvem já

Não pode ser pelo drive, ele vai mascarar o problema. Zipa o arquivo, troca extensão dele para txt e anexa no e-mail. Assim o Google vai deixar passar. Mas antes de enviar o projeto, apaga a pasta node_modules. Eu recrio ela aqui.

está bem

Fiz como pediu troquei a extensão e enviei

Aluno, você se enrolou ai um pouco com o projeto. Eu recebi um projeto com a pasta public em branco, aquela que tem os arquivos do curso.

Olha, veja ai uma forma que você consiga compartilhar o projeto. Você tem github? É o melhor caminho.

Você tem dropbox? É outra alternativa.

Quando você conseguir eu dou uma olhada. Enquanto isso, pode tentar fazer o que propôs, que é baixar o projeto do próximo capítulo.

enviei acho que está certo agora kkkk

Mesmo problema. Sem arquivos dentro das pastas.

Tem que ser zip pelo dropbox ou outro serviço de compartilhamento. Não tem jeito.

Opa! Eu ainda tenho interesse em ver seu zip. Você continuou do próximo capítulo ? Tudo certo?

Mais um interessado na solução deste enigma

solução!

Roger, vou fechar aqui porque o post ficou bem grande com um monte de informação que só mesmo olhando a estrutura do seu projeto.

Assim que conseguir compartilhar, abra um novo post com o problema para que seja mais fácil para mim e nossos moderadores monitorá-lo.