javascript - 显示排序的 Firebase 数组的特殊情况(使用 AngularJS)

标签 javascript jquery angularjs firebase angularfire

所以基本上我有一组俱乐部和一组用户。每个俱乐部和每个用户都有特定的纬度和经度。使用 ng-repeat 向用户显示所有俱乐部很容易,但我试图只显示每个用户一定距离内的俱乐部。所以到目前为止我想到的是:

var arr = [];
$scope.clubs.$loaded().then(function() {
    angular.forEach($scope.clubs, function(value, key) {
       if($scope.getDistance(value.lng, value.lat) == true) {
        console.log(value.name + " it's close enough!");
         arr.push( {id: value.$id, description: value.description, name: value.name});
       }
    });
    console.log(arr);
});
$scope.narr = arr;

有没有更优雅的方法来做到这一点?我基本上是从 firebase 数组中挑选出数据,然后将其放入一个较小的数组(arr)中,然后对其进行 ng 重复。但现在它不是 firebase 阵列......有什么想法吗?

附注我认为我无法使用任何内置的 firebase 排序,因为距离对于每个用户来说都是唯一的,并且每个位置都需要纬度和经度。

最佳答案

为什么不在模板中评估$scope.getDistance()

您只需在 $scope 上创建一个 $firebaseArray()

$scope.cabyns = $firebaseArray(ref);

然后在模板中,您可以使用 ng-repeat 中的项目调用 $scope.getDistance()。使用 ng-if 方向,您可以声明是否应该加载它。

<ul>
  <li ng-repeat="item in cabyns"> 
    <span ng-if="getDistance(item)">
      {{ item.name }}
    <span> 
  </li>
</ul>

您可以尝试做的另一件事是使用 GeoFire如果您正在进行地理围栏。

关于javascript - 显示排序的 Firebase 数组的特殊情况(使用 AngularJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279430/

相关文章:

javascript - ng-repeat 内部的动态 ng-switch

javascript - 删除后重新添加事件监听器--Javascript

javascript - Twitter Bootstrap 模态不出现

javascript - Q promise 链在错误后存在 promise 链

javascript - jQuery 中的 InsertAfter 给出错误 'Uncaught TypeError: Cannot set property ' innerHTML' of null';为什么?

javascript - jQueryUI 自动完成在目标输入字段中显示值而不是标签

javascript - 在 Controller angularjs 中调用自定义指令函数

javascript - 将复选框放在单元格中 jqgrid 插件

php - Ajax 请求无响应使用 codeigniter

javascript - Angularjs - 使用 ng-repeat 连续多次循环