Angularjs GeoFire geoQuery.on()将返回的值存储到数组中,以便使用后者

Angularjs GeoFire geoQuery.on()将返回的值存储到数组中,以便使用后者,angularjs,firebase,geofire,Angularjs,Firebase,Geofire,我在Ionic框架中使用Geo Fire和Angular JS,这里是我的Geo Fire代码 geoQuery = geoFire.query({ center: [location.lat, location.lng], radius: 5 }); geoQuery.on("key_entered", function(key, location, distance){//something here}) 在这里,我得到了这三个变量所需的所有匹配信息,分别是键、位置和距离。在这种情况

我在Ionic框架中使用Geo Fire和Angular JS,这里是我的Geo Fire代码

geoQuery = geoFire.query({
 center: [location.lat, location.lng],
 radius: 5
});

geoQuery.on("key_entered", function(key, location, distance){//something here})
在这里,我得到了这三个变量所需的所有匹配信息,分别是键、位置和距离。在这种情况下,我的查询匹配了来自firebase的3个信息。现在我想使用ng repeat将信息显示到离子列表中。为此,我使用以下代码将这些信息保存到数组中

var hello = geoQuery.on("key_entered", function(key, location, distance) {
  var names = [];
  names.push(key);
  distance = distance.toFixed(2);
  var distances = [];
  distances.push(distance);
});
但我的列表只显示了信息中的最后一个值。在这里,我拍摄了我的控制台的屏幕截图。在这里,我们可以看到这3个与我的查询匹配的距离值。 但列表仅显示最后一个值。
让我们分析一下您的代码,看看是否可以解释您看到的行为:

var hello = geoQuery.on("key_entered", function(key, location, distance) {
  var names = [];
  names.push(key);
  distance = distance.toFixed(2);
  var distances = [];
  distances.push(distance);
});
每次键进入查询标识的区域时,都会执行回调函数。在该函数中,创建两个数组,并向它们添加关键点和距离。因此,对于每个键,您将创建两个新的数组,这可能不是您想要的

试着这样做:

var names = [];
var distances = [];
var hello = geoQuery.on("key_entered", function(key, location, distance) {
  names.push(key);
  distance = distance.toFixed(2);
  distances.push(distance);
});
现在,每次关键点进入区域时,都会将关键点和距离添加到现有阵列。因此,随着时间的推移,您将在该阵列中获得许多关键点和距离


请记住,当退出
键时,您还应该从其数组中移除键+距离。

让我们分析您的代码,看看是否可以解释您看到的行为:

var hello = geoQuery.on("key_entered", function(key, location, distance) {
  var names = [];
  names.push(key);
  distance = distance.toFixed(2);
  var distances = [];
  distances.push(distance);
});
每次键进入查询标识的区域时,都会执行回调函数。在该函数中,创建两个数组,并向它们添加关键点和距离。因此,对于每个键,您将创建两个新的数组,这可能不是您想要的

试着这样做:

var names = [];
var distances = [];
var hello = geoQuery.on("key_entered", function(key, location, distance) {
  names.push(key);
  distance = distance.toFixed(2);
  distances.push(distance);
});
现在,每次关键点进入区域时,都会将关键点和距离添加到现有阵列。因此,随着时间的推移,您将在该阵列中获得许多关键点和距离

请记住,当
key\u退出时,
事件触发时,您还应该从其数组中移除key+距离