我正在尝试访问我创建的控制器中定义的变量,这样我就可以遍历列表并使用google maps api放置标记.我尝试了很多东西,但是我被卡住了.这是控制器:
app.controller('MainController', ['$scope', 'meteorite', function($scope, meteorite) {
meteorite.success(function(data) {
$scope.meteorites = data;});
}]);
这是我试图访问变量的部分.
<div id="map">
</div>
<div class="main" ng-controller="MainController">
<div id="stuff" ng-repeat="meteorite in meteorites">
<h1>{{meteorite.name}} : {{meteorite.mass | number}}</h1>
</div>
</div>
<script>
var map;
var myLatLng = {lat: -25.363, lng: 131.044};
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: myLatLng,
zoom: 10
});
for (var i = 0; i < [This is where i want to access meteorites]; i++) {
var marker = new google.maps.Marker({
position: {meteorites[i].lat, meteorites[i].long},
map: map
});
}
}
</script>
编辑
我收到的答案在添加一件事(ng-if =“陨石”)后完美地完成了:
<g-map ng-if="meteorites" meteorites="meteorites"></g-map>
最佳答案 你可能会为此建立一个指令:
angular.module('app', [])
.controller('MainController', ['$scope', function($scope) {
$scope.meteorites = [{name:'aaa', mass:1, lat: -25.363, long: 131.044}];
}])
.directive('gMap', function() {
return {
restrict: 'E',
replace: true,
template: '<div style="height:200px;"></div>',
scope: {meteorites: '='},
link: function(scope, element) {
var myLatLng = {lat: -25.363, lng: 131.044},
map = new google.maps.Map(element[0], {
center: myLatLng,
zoom: 10
});
angular.forEach(scope.meteorites, function(meteorit) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(meteorit.lat, meteorit.long),
map: map
});
})
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map">
</div>
<div class="main" ng-app="app" ng-controller="MainController">
<div id="stuff" ng-repeat="meteorite in meteorites">
<h1>{{meteorite.name}} : {{meteorite.mass | number}}</h1>
</div>
<g-map meteorites="meteorites"></g-map>
</div>