图表不与.resize一起出现,但与.render一起出现

时间:2013-01-10 11:27:38

标签: javascript dojo arcgis-server

我使用dojo 1.7(内置于我正在使用的Esri API中)在地图弹出窗口(在用户点击地图时触发)动态创建图表。

 var c = dojo.create("div", {
          id: "demoChart"
        }, dojo.create('div'));

设置图表属性(数据,主题等)后,如果我调用chart.render,图表会正确呈现,但尺寸错误(对于infoWindow容器div来说太大)。

但是,如果我调用chart.resize(175, 145),图表确实会以正确的大小创建,但不会在第一次点击时创建,而是第二次点击。

要复制see this JSFiddle,请参阅Javascript中的第49-53行。

  map.infoWindow.setContent(c);
  // Chart Resize will resize the DIV as needed.
  // However, the initial click will not show the chart
  chart.resize(175, 145);
  // Chart Render shows the chart on first click, but does not resize the div
  //chart.render();

我的印象是resize方法包括在其中调用render。因此,我不太清楚为什么我会这样做。

我需要知道需要改变什么才能创建与它所在的父div相同大小的图表div。

1 个答案:

答案 0 :(得分:1)

图表以默认大小(400 x 300px)呈现的原因是图表节点(div#demoChart)没有任何尺寸。

此外,在图表节点div可见之前,它将不具有要使用的图表的任何实际尺寸(仅样式尺寸)。然后它回落到默认大小300 x 400px。

使您的代码有效:

  1. 为div添加css样式

    #demoChart {
      width: 175px;
      height: 145px;
    }
    
  2. 显示信息窗口后,创建图表,图表节点实际可见。图表在实例化时(在构造函数()方法中获取它的尺寸,而不是像你期望的那样在render()方法中获得)。

  3. 我已经编辑了你的JSfiddle以使它工作(view JSfiddle)。