Javascript 从指令控制器内的承诺更新范围变量

Javascript 从指令控制器内的承诺更新范围变量,javascript,angularjs,angularjs-directive,angularjs-scope,angular-google-maps,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angular Google Maps,我是个新手。我正在尝试从指令的控制器(从其中的承诺)填充控制器中存在的map.markers数组。。而且很难弄清楚。谢谢你的帮助 var locationController = function ($scope, $http, AppModesService, limitToFilter, uiGmapGoogleMapApi) { // var latestMasterYear = AppModesService.getLatestMasterYear();

我是个新手。我正在尝试从指令的控制器(从其中的承诺)填充控制器中存在的map.markers数组。。而且很难弄清楚。谢谢你的帮助

var locationController = function ($scope, $http, AppModesService, limitToFilter, uiGmapGoogleMapApi) { //
        var latestMasterYear = AppModesService.getLatestMasterYear();
        uiGmapGoogleMapApi.then(function (maps) { $scope.googleVersion = maps.version; });
        $scope.map = {
                center: {
                    latitude: 40.0000, 
                    longitude: -98.0000,
                },
                zoom: 7,
                bounds: {},
                markers : []
        };
指令代码:

     app.directive('referencePoints', function () {
            return {
                restrict: 'E',
                scope: {
                    routeID: '@routeID',
                    road: '=',
                    openStatus: '=',
                    markers: '='
                },
                template: "{{routeID}}<div ng-repeat='point in refResults'>{{point.RoadName}}</div>",
                controller: function ($scope, $http, AppModesService) {
                    $scope.refResults;
                    $scope.isItOpen = true;
                    $scope.refResults = $http.get(AppModesService.getRisApiUrlPrefix() + 'GetReferencePoints?routesID=' + $scope.road + '&limited=true').then(
                            function (response) {
                                $scope.refResults = response.data;
// This is where the problem starts .. Should I inject $scope.markers here or not?
                                $scope.generateMarkers(response.data, $scope.markers)
                                //return response.data;
                            });
                    var generateMarkers = function (data, markers) {
                        for (i = 0; i < data.length; i++) {
                            var record = data[i];
                            var marker = {
                                latitude: record.Lat,
                                longitude: record.Long,
                                title: record.RoadName,
                                id: record.ID
                            };
                            markers.push(marker);
                        }
                        return markers;
                    };
                    $scope.generateMarkers = function(data, scope){
                        generateMarkers(data, scope);
                    };
                    //$scope.refPoints = $scope.referencePoints(routeID);
                }
            }
        });
app.directive('referencePoints',function(){
返回{
限制:'E',
范围:{
routeID:“@routeID”,
道路:“=”,
openStatus:“=”,
标记:'='
},
模板:“{{routeID}}{{point.RoadName}}”,
控制器:函数($scope、$http、AppModesService){
$scope.refResults;
$scope.isItOpen=true;
$scope.refResults=$http.get(AppModesService.getRisApiUrlPrefix()+'GetReferencePoints?routesID='+$scope.road+'&limited=true')。然后(
功能(响应){
$scope.refResults=response.data;
//这就是问题开始的地方..我是否应该在此处插入$scope.markers?
$scope.generateMarkers(response.data、$scope.markers)
//返回响应数据;
});
var generateMarkers=功能(数据、标记){
对于(i=0;i


另一项指令:

<ui-gmap-google-map center="map.center" zoom="map.zoom">
    <ui-gmap-markers models="map.markers" coords="'self'" icon="'icon'">

    </ui-gmap-markers>
</ui-gmap-google-map>


我无法从指令控制器将标记填充到地图。请帮助

我将referencePoints指令中的marker=“marker”更改为marker=“map.marker”,并修复了它。谢谢@Matho提供的线索。

在您的referencePoints指令的模板中添加
ng model=“markers”
尝试了这一点。还不走运……你的线索真的很有用。我将referencePoints指令中的marker=“marker”更改为marker=“map.marker”,这就解决了这个问题。
<ui-gmap-google-map center="map.center" zoom="map.zoom">
    <ui-gmap-markers models="map.markers" coords="'self'" icon="'icon'">

    </ui-gmap-markers>
</ui-gmap-google-map>