Question

J'ai donc une grande liste de Firebase que je veux filtrer à l'aide d'un autre objet Firebase que je lie.Si je ne lie pas mon objet "Recherche" à Firebase, il fine bien, mais quand je lie à Firebase, il renvoie des résultats zéro.

mon contrôleur:

  .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');
   }])

ma vue:

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

Un exemple d'objet 'Rechercher':

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

Un échantillon de «diagnostic» objet Firebase / Liste:

{
  "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"
}

Comment puis-je obtenir ceci pour filtrer correctement?

... et merci d'avance!

Était-ce utile?

La solution

Le problème est probablement que l'objet renvoyé de $ Bind contient plusieurs méthodes de $ que angulaires essaie de filtrer.

Essayez quelque chose comme ça ...

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

Ceci éliminera toutes les méthodes / valeurs $ et renvoyera la valeur brute des données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top