2016-08-08 14 views
0

Im auf diesem Google Maps Projekt arbeiten, aber ich kann die json

angular 
.module('angular-google-maps', ['uiGmapgoogle-maps']) 
.controller('mainController', controller); 

function controller ($scope, $http, $filter) { 
    $http.get('/data/markers.json').success(function(data) { 
    $scope.markers = data; 
    }); 

    $scope.map = { 
     center: { 
     latitude: 52.339287, 
     longitude: 4.925805 
     }, 
     zoom: 8, 
     markers: $scope.markers 
    }; 

$scope.options = {}; 

}; 

arbeitet nicht, wenn ich das richtig verstehe, kann ich die Daten nur erhalten, indem Sie $ scope.markers richtig?

+0

die '.success' Methode veraltet ist, sollten Sie '.then 'verwenden. Außerdem müssen Sie sicherstellen, dass Ihr Datenobjekt tatsächlich das enthält, was Sie erwarten. Ich würde 'console.log (JSON.stringify (data));'; Sie greifen wahrscheinlich nicht auf dieses Objekt zu, wie Sie beabsichtigen. –

Antwort

0

Unfortunate nicht. Wenn Sie $scope.markers = data; zuweisen, ändern Sie das Objekt, auf das die Variable verweist, aber $scope.map.makers verweist immer noch auf den alten Wert (der undefined ist).

Zwei der einfachsten Möglichkeiten, dies zu über kommen:

1) Hinweis die Variable derectly:

$http.get('/data/markers.json').success(function(data) { 
    $scope.map.markers = data; 
    $scope.markers = data; 
}); 

2) Mit einer Uhr:

$scope.markers = null; 
$http.get('/data/markers.json').success(function(data) { 
    $scope.markers = data; 
}); 

// This is fired whenever makers is changed 
$scope.$watch('makers', function(value) { 
    $scope.map.markers = value; 
}); 
+0

Ahh Ich sehe jetzt Danke Mann! – meiwaku

+0

Keine Sorgen :) Hoffe das half! Viel Glück –

0

sollten Sie then Methode verwenden, und ändern Sie das map Objekt in dem Rückruf:

$http.get('/data/markers.json').then(function(data) { 
     $scope.markers = data; 
     $scope.map.markers = data; 
}); 
0

$ scope.markers = Daten; Aufrufe nach async Anfrage, so Ihre Marker: $ scope.markers Aufruf undefined $ scope.markers

0

Sie haben keine Daten in $ scope.map.markers, weil der Wert der Daten von http ist asynchron und $ scope.markers ist nicht initialisiert

TRY:

angular 
    .module('angular-google-maps', ['uiGmapgoogle-maps']) 
    .controller('mainController', controller); 

function controller ($scope, $http, $filter) { 
    $http.get('/data/markers.json').success(function(data) { 
    $scope.markers = data; 

    $scope.map = { 
     center: { 
     latitude: 52.339287, 
     longitude: 4.925805 
     }, 
     zoom: 8, 
     markers: $scope.markers 
    }; 

$scope.options = {}; 
    }); 


};