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
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
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.
Como não obtive retorno estou fechando esse post. Se a dúvida continuou peço que crie um novo post.