2016-10-05 49 views
1

In this plunk我在Angular UI Modal中使用Highcharts圖表。模式可以調整大小(使用jQuery UI調整大小)。在Angular UI Modal中調整Highcharts圖表

目標是調整圖表的大小,使模式的大小調整爲100%模式的寬度和高度。我在Highcharts容器中定義了100%的寬度和高度,但這不起作用。有任何想法嗎?

HTML:

<script type="text/ng-template" id="myModalContent.html"> 
     <div id="container" style="min-width:300px;width:100%; height:100%"></div> 
    </script> 

    <button type="button" class="btn btn-default" ng-click="open()">Open me!</button> 

的Javascript

var app = angular.module("app", ['ui.bootstrap']); 
    app.controller("ctl", function($scope,$uibModal,$timeout) { 

     var modalInstance; 
     $scope.open = function() { 
     modalInstance = $uibModal.open({ 
       animation: false, 
       windowClass: 'the-modal', 
       templateUrl: 'myModalContent.html' 
      }); 

      $timeout(function(){ 

       $('.modal-content').resizable({ 
         handles: "all" 
       }); 

       plotChart(); 

      },10); 

     }; 

     var plotChart = function(){ 

       $('#container').highcharts({ 
      title: { 
       text: 'Monthly Average Temperature', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: 'Source: WorldClimate.com', 
       x: -20 
      }, 
      xAxis: { 
       categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
      }, 
      yAxis: { 
       title: { 
        text: 'Temperature (°C)' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       valueSuffix: '°C' 
      }, 
      legend: { 
       layout: 'vertical', 
       align: 'right', 
       verticalAlign: 'middle', 
       borderWidth: 0 
      }, 
      series: [{ 
       name: 'Tokyo', 
       data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 
      }, { 
       name: 'New York', 
       data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 
      }, { 
       name: 'Berlin', 
       data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
      }, { 
       name: 'London', 
       data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 
      }] 
     }); 

     }; 

    }); 

回答

3

更改通過添加監聽到調整大小事件,對於設置doAnimation = false更加流暢結束立竿見影的效果如下可調整大小的插件的定義:

$('.modal-content').resizable({ 
    handles: "all", 
    resize: function(event, ui) { 
     $('#container').highcharts() 
      .setSize(ui.size.width, ui.size.height, doAnimation = false); 
    } 
}); 
+0

我已經用你的解決方案[這裏](http://plnkr.co/edit/VGFxec2IK7IhYPa771BI?p=info)更新了plunk,問題在於圖表需要調整大小,因爲模式調整了大小,而不是你完成調整大小。 – ps0604

+0

我認爲這是一個滯後,由於渲染,嘗試設置'doAnimation = false' –

+0

是的,工作,請更新您的解決方案 – ps0604

0

Highcharts會偵聽窗口大小,但不會父元素調整大小。因此,一個簡單的加法,其假貨的窗口上一個模式調整大小會踢成highcharts佔用的可用空間的結束調整...

$('.modal-content').resizable({ 
    handles: "all", 
    stop: function(){ 
     window.dispatchEvent(new Event('resize')); 
    } 
}); 

如果你高興的更高的開銷,想要閃爍期間的變化然後調整大小,然後使用resize而不是stop按照上述方法爲您做。