为什么我不能在我的指令控制器中访问$ scope.map?

时间:2014-04-07 13:36:14

标签: angularjs

我有一个生成谷歌地图的指令:

directive('gMap', function(googleMaps){
return{
        restrict: 'E',
        replace: true,
        transclude: true,
        template: "<div ng-transclude></div>",
        scope: true,
        link: function(scope, element, attrs){
            scope.$on('location', function(){
                //här ska den recentreras
            })

            //create the map
            var center = googleMaps.makePosition(attrs.centerlat, attrs.centerlong)
            //update map on load
            var options = googleMaps.setMapOptions(center, attrs.zoom);
            scope.map = googleMaps.createMap(options, attrs.id)
            //googleMaps.addMarker(map, center,'Hello')

        },
        controller: ['$scope', function($scope) {
            console.log($scope);
        }]
    };
}).

当我console.log($scope)时,它输出一个包含节点映射的对象。 当我尝试console.log($scope.map)输出undefinded时,为什么?

1 个答案:

答案 0 :(得分:0)

那是因为你有一个范围,当你打电话给console.log()但是map还没有被创建,因为控制器是在预连接阶段之前实例化的。

假设您使用Chrome,console.log()可以生成&#34;更新&#34;视图,反映了console.log()被调用时对象的状态。但是,undefined当然无法更新。