Filtrando una lista de Firebase por otro objeto Firebase en AngularJS
-
21-12-2019 - |
Pregunta
Entonces, tengo una lista de BIG FIRBASE que quiero filtrar usando otro objeto Firebase con el que soy vinculante.Si no vinculo a mi objeto 'Buscar' a Firebase Filtros, pero cuando se une a Firebase, devuelve cero resultados.
My 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');
}])
mi opinión:
<a href="" ng-repeat="diagnoses in all_diagnoses | orderByPriority | filter:search" class="list-group-item">{{diagnoses.title}}</a>
Un objeto 'Buscar' ejemplo:
{
"constant": true,
"intermittent": true,
"localized": true,
"referred": false,
"region": "hip"
}
Una muestra del objeto / lista de Firebase 'Diagnosis':
{
"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"
}
¿Cómo puedo filtrar esto correctamente?
... y gracias de antemano!
Solución
El problema probablemente es que el objeto devuelto desde $ enlace contiene varios métodos de $ que angular está intentando filtrar.
prueba algo como este ...
syncData('tests/' + $routeParams.id + '/specs').$bind($scope, 'searchDirty');
$scope.$watch('searchDirty', function (search) {
$scope.search = angular.fromJson(angular.toJson(search));
});
Esto eliminará cualquier método / valores de $ y devolverá el valor en bruto de los datos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow