2016-06-04 7 views
0

Ich versuche, einen $ scope-Wert in meiner Ansicht anzuzeigen, aber es funktioniert nicht.

Meine console.log mit Bereich funktioniert.

Irgendeine Idee?

In meinem Controller mit Geolokalisierung Plugin

.controller('geoCtrl', ['$scope', '$ionicPlatform', function($scope, $ionicPlatform) { 
    function updateLoc($scope) 
    { 
     $scope.latitude2 = "wow"; 
     console.log("hello"); 
     console.log($scope.latitude); 
     console.log($scope.longitude); 
     console.log($scope.speed); 
    } 
     $scope.findGeolocation = function() { 
      console.log("navigator.geolocation works"); 
      var onSuccess = function(position) { 
       $scope.latitude = position.coords.latitude; 
       $scope.longitude = position.coords.longitude; 
       $scope.altitude = position.coords.altitude; 
       $scope.speed = position.coords.speed; 
       $scope.timestamp = position.timestamp; 
       console.log($scope.longitude); 
      updateLoc($scope); 

     }; 
     function onError(error) { 
      alert('code: ' + error.code + '\n' + 
        'message: ' + error.message + '\n'); 

     }; 
     navigator.geolocation.getCurrentPosition(onSuccess, onError); 
    } 
    $ionicPlatform.ready(function() { $scope.findGeolocation(); }) 

}]) 

Meiner Ansicht

<ion-view view-title="APP"> 
    <ion-content> 
    <div ng-controller="geoCtrl"> 
    <p>Bonjour, {{ latitude2 }} </p> 
    <p id="speed">Finding speed...</p> 
    <p id="latitude">Finding latitude...</p> 
    <p id="longitude">Finding longitude...</p> 
    </div> 
    </ion-content> 
</ion-view> 

Danke

+0

'$ scope.latitude2' wird in der Funktion' updateLoc' initialisiert, von dem was ich sehe, wird es nie aufgerufen, so dass sein Wert undefiniert ist. – Ankh

+0

Ich aktualisiere nur meinen Code. Es wurde in meinem Code aufgerufen, aber um meine Frage in stackoverflow zu stellen, musste ich etwas Code löschen. Entschuldigung, dass –

+0

diese Zeile für mich seltsam ist 'navigator.geolocation.getCurrentPosition (onSuccess, onError);'. Ich habe nicht Ihren Code, aber ich werde dies stattdessen verwenden 'navigator.geolocation.getCurrentPosition(). dann (onSuccess, onError); '. onSuccess wird im Geolocation-Service ausgeführt, daher ist der Gültigkeitsbereich nicht derselbe und wird nicht geteilt. Sie müssen 'getCurrentPosition()' zurückgeben Daten und initialisieren sie nach – AlainIb

Antwort

1

Die Geolocation-Callback-Funktion wird nicht in einem Digest läuft - Sie Winkel sagen müssen, dass Ein Update wurde vorgenommen. d. h.

 var onSuccess = function(position) { 
      $scope.$apply(function() { 
       $scope.latitude = position.coords.latitude; 
       $scope.longitude = position.coords.longitude; 
       $scope.altitude = position.coords.altitude; 
       $scope.speed = position.coords.speed; 
       $scope.timestamp = position.timestamp; 
       updateLoc($scope); 
      }); 
     }; 
+0

Es ist Arbeit !!!!! Vielen Dank :) –

Verwandte Themen