我创建了jsFiddle来描述我的问题。 http://jsfiddle.net/rzajac/MMud3/
指令本身就在这里:
var myApp = angular.module('myApp', []);
myApp.directive('map', function(){
return {
restrict: 'E',
scope: {},
link: function(scope, elem, attrs)
{
elem
.height(400)
.width(600)
.vectorMap({
map: 'usa_en',
backgroundColor: null,
color: '#ffffff',
hoverColor: '#999999',
selectedColor: '#666666',
enableZoom: false,
showTooltip: true
});
document.getElementById('mapHeight').value = elem.height();
}
}
});
该指令在其自身内部创建html和SVG元素。但是当我试图获得创建地图的高度时,我得到19而不是400.我做错了什么?
答案 0 :(得分:3)
<map>
标签似乎有一些影响高度计算的默认样式。
以下css应解决问题:
map {
display: block;
}
另一种解决方法是将指令声明样式更改为 attribute (A
)。将<map>
更改为<div map></div>
,将指令restrict: 'E'
更改为restrict: 'A'
。