2015-08-03 2 views
1

Я использую Geo Огонь с угловыми JS в Ионическом Framework вот мой Geo Огонь код выглядитGeoFire geoQuery.on() хранения возвращаемых значений в массив для использования последней

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

geoQuery.on("key_entered", function(key, location, distance){//something here}) 

Здесь я получаю все Соответствующая информация, что мне было нужно для этих трех переменных, соответственно, ключ, местоположение & расстояние. В этой ситуации мой запрос сопоставил 3 информации от firebase. Теперь я хочу отобразить информацию в Ionic List, используя 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 значения расстояний, которые соответствуют моему запросу. Но в списке отображается только последнее значение. here we can see the 3 values of distance

ответ

4

Давайте анализировать код, чтобы увидеть, если мы можем объяснить поведение, которое вы видите:

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_exited.

+0

спасибо, что решил мою проблему –

Смежные вопросы