Ang*_*yJS 28 javascript geolocation angularjs angularjs-directive angularjs-scope
如何在angularjs中使用HTML5地理定位?我可以使用HTML5获取它; 但是如何将它传递给控制器中的angularjs范围?任何样本jsfiddle都会节省我的一天!
Jar*_*red 65
我建议将它抽象为一个服务,这样你的控制器就不会依赖window.navigator,并且避免不必要地使用$ scope.$ apply().这是我在项目中使用的内容:
angular.module('app', []).factory('geolocationSvc', ['$q', '$window', function ($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
};
}]);
Run Code Online (Sandbox Code Playgroud)
然后我在我的控制器中使用它,如下所示:
function captureUserLocation() {
geolocationSvc.getCurrentPosition().then(onUserLocationFound);
}
Run Code Online (Sandbox Code Playgroud)
Vla*_*ich 34
你可以做点什么
myApp.controller('fooCtrl', function($scope){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
$scope.$apply(function(){
$scope.position = position;
});
});
}
})
Run Code Online (Sandbox Code Playgroud)
你需要做$ scope.$ apply来触发地理定位到达时的摘要周期并更新所有的观察者.
归档时间: |
|
查看次数: |
35601 次 |
最近记录: |