Pergunta

Portanto, tenho uma grande lista do Firebase que desejo filtrar usando outro objeto do Firebase ao qual estou vinculando.Se eu não vincular meu objeto 'pesquisa' ao Firebase, ele filtra perfeitamente, mas quando vinculo ao Firebase, ele retorna zero resultados.

meu controlador:

  .controller('TestResultsCtrl', ['$scope', 'syncData', '$routeParams', '$firebase', '$filter', function($scope, syncData, $routeParams, $firebase, $filter) {
      $scope.id = $routeParams.id;
      syncData('tests/' + $routeParams.id).$bind($scope, 'test');
      syncData('tests/' + $routeParams.id + '/specs').$bind($scope, 'search');
      syncData('diagnoses').$bind($scope, 'all_diagnoses');
   }])

minha visão:

<a href="" ng-repeat="diagnoses in all_diagnoses | orderByPriority | filter:search" class="list-group-item">{{diagnoses.title}}</a>

um exemplo de objeto de 'pesquisa':

{
  "constant": true,
  "intermittent": true,
  "localized": true,
  "referred": false,
  "region": "hip"
}

uma amostra do objeto/lista do Firebase de 'diagnósticos':

{
  "constant": true,
  "intermittent": true,
  "localized": true,
  "referred": false,
  "region": "hip",
  "title": "Hip Osteoarthritis"
},
{
  "constant": true,
  "intermittent": false,
  "localized": false,
  "referred": true,
  "region": "neck",
  "title": "Whiplash"
}

Como faço para que isso seja filtrado corretamente?
...E agradeço antecipadamente!

Foi útil?

Solução

O problema provavelmente é que o objeto retornado de $bind contém vários métodos $ que o Angular está tentando filtrar.

Tente algo assim...

syncData('tests/' + $routeParams.id + '/specs').$bind($scope, 'searchDirty');
$scope.$watch('searchDirty', function (search) {
    $scope.search = angular.fromJson(angular.toJson(search));
});

Isso eliminará quaisquer métodos/valores $ e retornará o valor bruto dos dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top