2016-04-17 6 views
-1

参考までに、私はAngularJSを初めて使っています。 Googleマップで選択したマーカーの座標を変数に格納しようとしています。地図上のポイントを選択すると座標を記録できますが、なぜ$ scope.map.markersがaddSesh()で "undefined"を返すのかわかりません。それ以上の説明が必要な場合はお知らせください。前もって感謝します!Google MapsとAngular JSを使用しています。変数に座標を格納しようとしています

angular 
    .module('surfSup') 
    .controller('SessionController', function($scope, $location, SessionService, CacheEngine, $rootScope) { 
$scope.addSesh = addSesh; 
    function addSesh() { 
     $scope.sessionObjs = { 
     time: $scope.time ? $scope.time.toISOString().slice(0,19) : "", 
     isSurf: $scope.suppy, 
     location: $scope.location 
     }; 
     console.log("session obj", $scope.sessionObjs); 
     console.log("map coords: ", $scope.map.markers); 
     SessionService.addSession($scope.sessionObjs).then(function(res){ 
     console.log('session created', res); 
     $location.path('/sessions'); 
    } 
$scope.map = { 
     center: { 
      latitude: 32.7799400, 
      longitude:-79.9341970 
     }, 
     zoom: 11, 
     markers: [], 
     events: { 
     click: function (map, eventName, originalEventArgs) { 
      var e = originalEventArgs[0]; 
      var lat = e.latLng.lat(),lon = e.latLng.lng(); 
      var marker = { 
       id: Date.now(), 
       coords: { 
        latitude: lat, 
        longitude: lon 
       } 
      }; 
      $scope.map.markers.push(marker); 
      console.log('MARKERS:', $scope.map.markers); 
      window.glow = $scope.map.markers; 
      $scope.$apply(); 
     } 
    } 
    }; 

答えて

0

(十分でない情報)が、ログ行$scope.mapsにブレークポイントを設定し、クロムのdevのツールでそれを点検してみてください。 $scope.maps.markersが未定義であるだけでなく、$scope.maps(未定義の場合もあります)も参照してください。その後、戻ってください。

+0

これを試してみましたが、$ scope.mapsをログに記録できましたが、データが$ scope.map.markersにバインドされていないように見えます。 – wbhood

+0

空の配列は未定義とは異なります。空の配列にマーカーを初期化しています。 – JonyD

+0

うん、そしてI console.log( 'MARKERS:'、$ scope.map.markers);座標を持つ配列を返しますが、何らかの理由でaddSesh()関数で渡そうとすると空です。つまり、マーカーを選択すると、座標を格納する$ scope.map.markersをログに記録しますが、addSesh()関数で$ scope.map.markersを渡そうとすると、空の配列が返されます。 – wbhood

関連する問題