所以基本上我有一组俱乐部和一组用户。每个俱乐部和每个用户都有特定的纬度和经度。使用 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/