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

Filtro não funciona mais

Após eu implementar a funcionalidade de recursos ('ngResource') o meu filtro parou de funcionar. Tenho um h1 com um data-binding com a propriedade filtro do meu controller. Mas a lista de ads não é mais filtrada.

Seguem algumas partes do código que julguei mais importantes.

=============================

main.js

=============================

angular.module('divulgabairro',['minhasDiretivas', 'ngAnimate', 'ngRoute', 'ngResource']) .config(function($routeProvider, $locationProvider) {

$routeProvider.when('/', { templateUrl: 'partials/principal.html', controller: 'AdsController' });

============================

=============================

principal.html

=============================

{{filtro}}

=============================

=============================

principal.html

=============================

//código omitido

{{filtro}}

(AQUI ENTRA O PRINCIPAL.HTML
14 respostas

main.js

angular.module('divulgabairro',['minhasDiretivas', 'ngAnimate', 'ngRoute', 'ngResource'])
.config(function($routeProvider, $locationProvider) {

    $routeProvider.when('/', {
        templateUrl: 'partials/principal.html',
        controller: 'AdsController'
    });

    $routeProvider.when('/termos', {
        templateUrl: 'partials/termos.html',
        controller: 'AdsController'
    });

    $routeProvider.when('/cadastro', {
        templateUrl: 'partials/novo.html',
        controller: 'AdsController'
    });


    $routeProvider.otherwise( 
        { redirectTo: '/termos'}
    );
})

principal.html

<h1>{{filtro}}</h1>
<div class="ad-list">
    <item  class="ad-animado" ng-repeat="ad in ads | filter: filtro" foto="{{ad.foto}}" nome="{{ad.nome}}" telefone="{{ad.telefone}}">
    </item>
</div>

controller

angular.module('divulgabairro').controller('AdsController', function($scope, $http, $resource, $routeParams){
    $scope.ads = [];
    $scope.filtro = '';

    var recursoAds = $resource('v1/ads');

    recursoAds.query(function(ads){
        $scope.ads = ads;    
    }, function(erro){
        console.log(erro);
    });

});

index.html

<base href="/">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/estilo.css">
    <link rel="stylesheet" type="text/css" href="css/efeitos.css">
    <link rel="stylesheet" type="text/css" href="css/mediaqueries.css">
    <link rel="stylesheet" type="text/css" href="css/font-awesome.min.css">

    <script src="js/lib/angular.min.js"></script>
    <script src="js/lib/angular-animate.min.js"></script>
    <script src="js/lib/angular-route.min.js"></script>
    <script src="js/lib/angular-resource.min.js"></script>
    <script src="js/main.js"></script>

    <script src="js/controllers/ads-controller.js"></script>
    <script src="js/directives/minhas-diretivas.js"></script>

Rafael você criou o filtro mas em nenhum momento declarou o valor para ele, qual seria o problema que esta tendo ? explique melhor por favor.

Eu digito os dados e a lista permanece a mesma. Porém o

<h1>{{filtro}}</h1>

funciona perfeitamente.

Não achei o código do input referente ao filtro, posta ele para eu dar uma olhada.

Claro!

<div class="search-wrapper">
            <form id="search-form">
                <input type="text" class="search-input" placeholder="O que procura? Exemplo: Veterinária em Bangú" ng-model="filtro" autofocus>
                <button class="btn-search"><span class="fa fa-search"></span></button>
            </form>
        </div>

Camarada, falei besteira o

<h1> {{filtro}} </h1>

Estava funcionando somenta no index.html no meu partial não.

Fiz umas alterações, colocando o atributo ng-controller no meu form de busca, forçei uma alteração no valor da minha variável filtro no meu controller.

$scope.filtro = 'Churrascaria';

e ao recarregar a página estava filtrando, o input mostrando o texto churrascaria. Porém aparentemente meu input que não está 'sincronizado' com o atributo no controller. O que pode ser?

Só funcionou quando tirei as declarações de controler no meu arquivo main.js deixando nas rotas deste jeito:

    $routeProvider.when('/', {
        templateUrl: 'partials/principal.html'
    });

Além disso tive que declarar meu controller no body, na minha index.html:

<body class="menu-opens" ng-controller="AdsController">

Rafael realmente não sei te falar o que pode ter acontecido, precisaria do projeto para fazer uns testes melhores para chegar ao problema.

Com certeza! Pode me passar seu e-mail?

matheushcastiglioni@gmail.com, manda para mim ele compactado que eu dou uma olhada.

solução!

Fala ai Rafael, respondi o email com o projeto correto, la descrevi as mudanças para que o filtro funcionasse.

SHOW DE BOLA!!! Valeu!

Depois da um feedback se deu certo.