我有一个生成谷歌地图的指令:
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
时,为什么?
答案 0 :(得分:0)
那是因为你有一个范围,当你打电话给console.log()
但是map
还没有被创建,因为控制器是在预连接阶段之前实例化的。
假设您使用Chrome,console.log()
可以生成&#34;更新&#34;视图,不反映了console.log()
被调用时对象的状态。但是,undefined
当然无法更新。