Angular/JS:如何将范围变量传递给javascript函数?

Angular/JS:如何将范围变量传递给javascript函数?,javascript,angularjs,Javascript,Angularjs,我试图访问在我创建的控制器中定义的变量,这样我就可以循环浏览列表并使用GoogleMapsAPI放置标记。我试过很多方法,但是我被卡住了。这是控制器: app.controller('MainController', ['$scope', 'meteorite', function($scope, meteorite) { meteorite.success(function(data) { $scope.meteorites = data;}); }]); 这就是我试图访问变量的部分 &

我试图访问在我创建的控制器中定义的变量,这样我就可以循环浏览列表并使用GoogleMapsAPI放置标记。我试过很多方法,但是我被卡住了。这是控制器:

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>


{{陨石.名称}:{{陨石.质量|编号}
var映射;
var Mylatng={lat:-25.363,液化天然气:131.044};
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
中心:myLatLng,
缩放:10
});
for(var i=0;i<[这是我想要访问陨石的地方];i++){
var marker=new google.maps.marker({
位置:{陨石[i].lat,陨石[i].long},
地图:地图
});
}
}
编辑

我收到的答案在添加了一件事(ng if=“meteorites”)后非常有效:


您很可能会为此构建一个指令:

angular.module('app',[])
.controller('MainController',['$scope',函数($scope){
$scope.meteorites=[{名称:'aaa',质量:1,纬度:-25.363,长:131.044}];
}])
.directive('gMap',function(){
返回{
限制:'E',
替换:正确,
模板:“”,
范围:{陨石:'='},
链接:功能(范围、元素){
var Mylatng={lat:-25.363,液化天然气:131.044},
map=新的google.maps.map(元素[0]{
中心:myLatLng,
缩放:10
});
角度。forEach(范围。陨石,功能(meteorit){
var marker=new google.maps.marker({
位置:新google.maps.LatLng(meteorit.lat,meteorit.long),
地图:地图
});
})
}
}
});

{{陨石.名称}:{{陨石.质量|编号}

不幸的是,在非角度JavaScript中不能像那样使用角度变量。你为什么不把代码放在你的控制器里呢?在这种情况下,为什么你有单独的
标签?正如尼古拉斯所说,这可以很容易地进入你的控制器。您甚至可以将角度变量传递回页面,以便在其他脚本中使用。必须有一个单独的脚本标签的原因;如果你告诉我们原因是什么,这将有助于我们回答你的问题。我这样做的唯一原因是因为我以前从未使用过angular,并试图通过做这个小项目来学习它。GoogleAPI提供了这个脚本,我只是添加了angular来读取陨石记录中的一些json,并尝试将它们添加到地图中。我想我不明白如何从控制器中调用它来“启动”映射,有什么提示吗?脚本标记是否具有
async
属性?试着移除它。非常感谢你!这确实有助于理解如何处理此类问题。竖起大拇指!嗯,地图会一直加载,直到一切正常,但是当涉及到foreach循环时,它会说scope.meteorites是未定义的,它不会进入循环。我已经尝试了很多方法,但我似乎无法循环使用数据,有什么想法吗?太好了:)很高兴我能帮上忙
<g-map ng-if="meteorites" meteorites="meteorites"></g-map>