Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angularjs中重新绘制flot图表?_Angularjs_Angularjs Scope_Flot - Fatal编程技术网

如何在angularjs中重新绘制flot图表?

如何在angularjs中重新绘制flot图表?,angularjs,angularjs-scope,flot,Angularjs,Angularjs Scope,Flot,我正在使用绘制一个堆叠条形图。当我对端点进行异步调用以获取图表的数据时,它无法显示。我怀疑它需要重新绘制。有一个函数看起来像是重新绘制flot图表。请帮我用Angularjs重新绘制flot图表 <flot dataset="tasksRunData" options="tasksRunChartOptions" class="center-block" width="100%" height="400px" id="reportTasksRunRange.id"></flot

我正在使用绘制一个堆叠条形图。当我对端点进行异步调用以获取图表的数据时,它无法显示。我怀疑它需要重新绘制。有一个函数看起来像是重新绘制flot图表。请帮我用Angularjs重新绘制flot图表

<flot dataset="tasksRunData" options="tasksRunChartOptions" class="center-block" width="100%" height="400px" id="reportTasksRunRange.id"></flot>

angular.module('myApp').controller('Step2Controller', function($scope, $location, $interval, dialogs, $modal, $transition, ReportingService) {

    ...

    $scope.tasksRunData = mainArray;
    $scope.tasksRunChartOptions = {
        legend: {
            show: true,
            margin: 2
        },
        xaxis: {
            ticks: yaxisArray,
            alignTicksWithAxis: "right"
        },
        grid: {
            labelMargin: 10,
            hoverable: true,
            borderWidth: 0
        },
        series: {
            stack: true
        },
        colors: colorCodesArray,
        tooltip: true
    };

    ...
    $scope.redrawTasksRunDataHistoByChart();
    ...

    $scope.redrawTasksRunDataHistoByChart = function() {
        $scope.tasksRunData.draw(); //TypeError: undefined is not a function
        alert("AAAA");
    }
});
angularjs服务

angular.module('myApp')
    .service('ReportService', function ReportService($http, $q) {

        var getTasksRunDateHistoByType = function() {
            var deferred = $q.defer();
            $http({
                method: 'POST',
                url: "http://localhost:4040/reports/taskRun",
                data: '{ "client_user_info": { "client_id": "MU03"}}'
            }).
            success(function(result, status, headers, config) {
                deferred.resolve(result);
            }).
            error(function(result, status, headers, config) {
                console.log("Error");
            });
            return deferred.promise;
        };

        return {
            getTasksRunDateHistoByType: getTasksRunDateHistoByType
        };
    });

查看该指令的源代码,当
$scope.dataset
更改时,它将自动重新绘制

  $scope.redrawChart = function() {
    var tmp = [];
    for (var i = 0; i < 10; i++){
      tmp.push([i,Math.random() * 10]);
    }
    $scope.dataset = [{ data: tmp }];
  };

请参阅更新。

hmm。。不确定当通过rest端点接收数据时,为什么我的flot没有被渲染。应用硬编码相同数据时,Flot图表显示正确。我在chrome调试器中验证了数据。有没有一种方法可以手动触发angularjs中的重新绘制?@abi1964,与其尝试解决您的问题,不如用问题的细节(异步调用)更新您的问题。用新数据显示重新分配
$scope.dataset
的代码。谢谢。请你看一看扩展版好吗?
  $scope.redrawChart = function() {
    var tmp = [];
    for (var i = 0; i < 10; i++){
      tmp.push([i,Math.random() * 10]);
    }
    $scope.dataset = [{ data: tmp }];
  };
   $scope.renderTasksRunDateHistoByType = function(jsonInput) {
      $scope.dataset = [{
        data: jsonInput
      }];

      //console.log(jsonInput);
      //$scope.tasksRunData = mainArray;
      //$scope.tasksRunChartOptions
      //getting data here once response is received from server
    };