2016-06-04 4 views
0

Я пытаюсь отобразить значение $ scope в моем представлении, но это не работает.

Моя консоль.log с областью действия.

Любая идея?

В моем контроллере с Геопозиционированием

.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(); }) 

}]) 

На моем взгляде

<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> 

Спасибо

+0

'$ scope.latitude2' является инициализацию в функции' updateLoc', от того, что я могу видеть, что это никогда не называют, поэтому его значение будет неопределенным. – Ankh

+0

Я просто обновляю свой код. он был вызван в моем коде, но для публикации моего вопроса в stackoverflow мне пришлось удалить некоторый код. извините за то, что –

+0

эта строка для меня странная. 'navigator.geolocation.getCurrentPosition (onSuccess, onError);'. У меня нет вашего кода, но я буду использовать его вместо 'navigator.geolocation.getCurrentPosition(). then (onSuccess, onError); '. onSuccess выполняется в службе геолокации, поэтому область не является одинаковой и не разделяется. вы должны сделать 'getCurrentPosition()' возвращать данные и инициализировать его после – AlainIb

ответ

1

Функция обратного вызова геолокации не работает внутри дайджеста - вы должны сказать угловатыми, что было сделано обновление. т.е.

 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

Это работа !!!!! Спасибо :) –

Смежные вопросы