1

我正在使用工厂方法来获取用户的当前位置。下面是我的工厂方法:

app.factory('FactoryName', function($http, $q, $window){ 
    'use strict';
    function getCurrentPosition() {
        var deferred = $q.defer();

        if (!$window.navigator.geolocation) {
            deferred.reject('Geolocation not supported.');
        } else {
            $window.navigator.geolocation.getCurrentPosition(
                function (position) {
                    deferred.resolve(position);
                },
                function (err) {
                    deferred.reject(err);
                });
        }

        return deferred.promise;
    }    

    return {
        getCurrentPosition: getCurrentPosition
    };      
});

现在在控制器内部,我正在获取用户的当前位置,如下所示:

FactoryName.getCurrentPosition().then(UserLocationFound).catch(UserLocationNotFound);
var UserLocationFound = function(data, status) {
   $scope.latitude = data.coords.latitude;
   $scope.longitude = data.coords.longitude;
};
var UserLocationNotFound = function(data, error) { 
   console.log("location not found")
};

假设这个页面的 url 是“domain.com/form”,当我直接进入这个页面时,它工作正常,“then”和“catch”会根据情况触发。但是当我从其他页面(锚标记链接)转到此页面时,问题就出现了。在这种情况下,不会触发任何事件。我无法理解为什么它在一种情况下有效,而在另一种情况下无效。

4

0 回答 0