通过Angularjs中的另一个Firebase对象过滤Firebase列表

时间:2014-04-14 00:07:12

标签: angularjs firebase angularfire

所以我有一个很大的firebase列表,我希望使用另一个我绑定的firebase对象进行过滤。如果我不绑定我的搜索'对firebase的对象过滤得很好,但是当我绑定到Firebase时,它会返回零结果。

我的控制器:

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

我的观点:

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

示例&#39;搜索&#39;对象:

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

&#39;诊断的样本&#39; firebase对象/列表:

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

如何正确过滤?
...并提前谢谢你!

1 个答案:

答案 0 :(得分:2)

问题可能是从$ bind返回的对象包含Angular试图过滤的几个$方法。

尝试这样的事情......

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

这将删除任何$ methods / values并返回数据的原始值。