0

我正在使用带有 angularjs 的 geofire 库。在编写基于基本地理位置的查询时,我注意到发生了一些奇怪的事情。状态更改后,页面显示为空白,并且查询似乎未执行。但是,如果我 ctrl + f5,数据显示和查询执行。

我想知道为什么会这样。我在下面包含了我的控制器代码。感谢任何帮助,我一直在尝试很多事情(尝试更新用户的地理位置以强制触发事件,$timeout 等)。

'use strict';

angular
    .module('m02-discover')
    .controller('DiscoverController', [
        '$scope', '$state', 'fbRef', 'fbGeo', '$geofire', 'Discover', '$timeout',
        function($scope, $state, fbRef, fbGeo, $geofire, Discover, $timeout) {

          var ref = new Firebase(fbRef);
          var geoRef = new Firebase(fbRef + 'geofire/');
          var $geo = $geofire(geoRef);

          $scope.searchResults = [];

          var query = $geo.$query({
              center: [37.68465, -122.1420265],
              radius: 10
          });

          // Setup Angular Broadcast event for when an object enters our query
          var geoQueryCallback = query.on('key_entered', 'SEARCH:KEY_ENTERED');

          // Listen for Angular Broadcast
          $scope.$on('SEARCH:KEY_ENTERED', function (event, key, location, distance) {

            // Do something interesting with object
            ref.child('users').child(key).once("value", function(snapshot) {
              var user = snapshot.val();
              $scope.$apply(function(){
                $scope.searchResults.push(user);
              });
            });

            // Cancel the query if the distance is > 50 km
            if(distance > 50) {
              geoQueryCallback.cancel();
            }

          });

          $scope.favoriteUser = function(favoritedID, favoritedTwitterID){
            Discover.favoriteUser(favoritedID, favoritedTwitterID);
          }

        }
]);
4

0 回答 0