Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
18
respostas

textoFiltro: true

após preencher o repeat com o trecho de código da explicação

ng-repeat="foto in fotos | filter:filtro : true"

e digitar um item do resultado, o filtro é realizado com sucesso porém ao apagar tudo a lista original não é exibida

18 respostas

Apagar tudo, o que você esta se referindo?

Oi Rafael?

Opa?

Cole a implementação de filtro para que eu possa ver. Lembre-se que usando dessa forma, filtro precisa ser uma função, e não um atributo como explico na resposta.

desculpa a demora

então Flavio... Ao digitar Lobo na caixa de texto, somente a foto lobo é exiba. Após ter feito o passo acima, e apagar todo o texto da caixa de texto, nenhuma foto é exibida.

o html ( coloquei somentei o body)

<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 título da foto" 
                            ng-model="filtro" ng-model-options="{ debounce: 500 }">
                    </form>
                </div> <!-- fim col-md-12 -->
            </div> <!-- fim row -->

            <div class="row">
                <meu-painel class="col-md-2 painel-animado" ng-repeat="foto in fotos | filter: filtro" titulo="{{foto.titulo}}">
                    <img class="img-responsive center-block" src="{{foto.url}}" alt="{{foto.titulo}}">
                </meu-painel>
            </div><!-- fim row -->
        </div> <!-- fim container -->        
    </body>

controller

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

    $scope.fotos = [];
    $scope.filtro = '';

    $http.get('/v1/fotos')
    .success(function(retorno) {
        console.log(retorno);
        $scope.fotos = retorno; // não precisa fazer retorno.data
    })
    .error(function(erro) {
        console.log(erro);
    });

});

O último código que você postou funciona?

Ta confuso porque seu código inicial era que você estava experimentando a explicação complementar de definir uma função dr filtro mas não definia a função.

Você escreveu:

ng-repeat="foto in fotos | filter:filtro : true"

É isso que esta com problema e não o código anterior que postou? É isso? Se for em nenhum lugar você definiu a função filtro que deve receber true ou false seguindo algum critério. Da uma olhada na explicação extra mais uma vez.

Flavio,

 filtro

não é uma função e sim a model

ng-model="filtro"

O trecho de código que eu postei é da própria explicação. Segue o link: https://cursos.alura.com.br/course/angularjs-mvc/section/5/task/2

De qualquer forma, o que me parece estranho é o que eu citei na resposta anterior em relação ao digitar algo na caixa de texto e depois apagar o que foi digitado, nenhuma foto é exibida.

Se você esta usando ng-repeat="foto in fotos | filter: filtro" não vejo razão para não funcionar. Se você apaga o que esta no campo do filtro ele deve exibir tudo.

É esse o código vigente? Fiz agora aqui e funcinou perfeito.

Você atualizou a lib do Angular?

Só me dá um esclarecimento a respeito da minha última pergunta para não haver ambiguidade na minha resposta.

Utilizei o zip que foi citado na descrição do capítulo

Nunca nesse treinamento houve um problema como esse nessa parteVocê vai compactar sua pasta alurapic e me passar o link para que eu possa ver o projeto inteiro. Não costumo fazer isso mas não vejo outra solução.

Aguardo o link.

Aguardo seu zip, não tem jeito.

Alguém alterou a resposta do instrutor indevidamente em https://cursos.alura.com.br/course/angularjs-mvc/section/5/task/5/opinion

Alguém deve ter enviado uma sugestão e um dos nossos moderadores aceitou com problema. Eu vou alterar, mas independente disso se você fez como faço no vídeo deveria funcionar.

Mande o zip :)

Pronto, já alterei a explicação extra do exercício. Agora, fico no aguardo do seu projetinho para que eu possa verificá-lo.

Rafael?

Oi Rafael, estou no aguardo ainda.

Ainda aguardando seu projeto.

solução!

Como não obtive retorno estou fechando esse post. Se a dúvida continuou peço que crie um novo post.