Solucionado (ver solução)
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.