我正在使用工厂方法来获取用户的当前位置。下面是我的工厂方法:
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”会根据情况触发。但是当我从其他页面(锚标记链接)转到此页面时,问题就出现了。在这种情况下,不会触发任何事件。我无法理解为什么它在一种情况下有效,而在另一种情况下无效。