Ionic角工厂返回undefined

ionic angular factory return undefined

本文关键字:undefined 返回 工厂 Ionic      更新时间:2023-09-26

我得到了一个视图,我渲染了一个谷歌地图,然后应该定期检查设备的位置。

控制器

.controller('SearchCtrl', function($scope, $ionicLoading, TrackLocation) {
    //document.addEventListener("deviceready", onDeviceReady, false);
    //function onDeviceReady() {
        //Loads Google Map
        var mapOptions = {
            center: new google.maps.LatLng(0,0),
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: false,
            streetViewControl: false
        };
        var map = new google.maps.Map(document.getElementById("map"), mapOptions);
        var myPost = TrackLocation.track();
        console.log(myPost);
    //}
})
工厂

.factory('TrackLocation', function($http, $cordovaGeolocation) {
    return {
        track: function() {
            console.log("Started Tracking");
            var lat, long;
            var watchOptions = {
                timeout : 3000,
                enableHighAccuracy: true
            };
            var watch = $cordovaGeolocation.watchPosition(watchOptions);
            watch.then(
            null,
            function(err) {
                console.log(err);
                return "lole";
            },
            function(position) {
                lat  = position.coords.latitude
                long = position.coords.longitude
                console.log(lat);
            });
            return {'lat': lat, 'long':long };
        },
        stop: function() {
        }
    };
})

控制台日志

Started Tracking
Object {lat: undefined, long: undefined}
103 14.408132700000001

myPost返回一个未定义的值,因为它是在实际值传递之前调用的。

请帮。

你应该在你的track方法中返回just watch或者返回promise,然后在success回调中用lat和long值解析这个promise