AngularJs指令报告错误的高度

时间:2013-02-13 14:21:14

标签: angularjs angularjs-directive

我创建了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.我做错了什么?

1 个答案:

答案 0 :(得分:3)

<map>标签似乎有一些影响高度计算的默认样式。

以下css应解决问题:

map {
    display: block;
}

另一种解决方法是将指令声明样式更改为 attribute A)。将<map>更改为<div map></div>,将指令restrict: 'E'更改为restrict: 'A'