【问题标题】:Angular chart.js showing error chart is not defined显示错误图表的 Angular chart.js 未定义
【发布时间】:2015-10-21 02:50:52
【问题描述】:

我是 Angular js 的新手。当我尝试执行以下代码时。它在控制台中显示一些错误。 ReferenceError:图表未定义。我无法理解错误。所以任何人请帮助我。如果问题不正确,请更正问题

我的 HTML 代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>school</title>
        <link rel="stylesheet" href="style.css" type="text/css"/>
        <link rel="stylesheet" href="fonts/text-font/css/font_icon.css" type="text/css"/>
        <meta name="viewport" content="width=device-width; initial-scale=1.0" />
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <!-- angular -->
        <script type="text/javascript" src="js/angular/angular.min.js"></script>
        <!-- angular chart -->
        <link rel="stylesheet" href="js/angular/angular-chart.css" type="text/css"/>
        <script type="text/javascript" src="js/angular/angular-chart.min.js"></script><br />
        <script type="text/javascript" src="js/angular/angular.js"></script>

        <script type="text/javascript" src="js/script.js"></script>
    </head>
    <body ng-app="app">
        <div ng-controller="LineCtrl">
                <canvas id="line" class="chart chart-line" chart-data="data" chart-labels="labels" 
                chart-legend="true" chart-series="series" chart-click="onClick"></canvas> 

            </div>
    </body >
</html>

我的 angular.js:

angular.module("app", ["chart.js"]) 
  // Optional configuration
  .config(['ChartJsProvider', function (ChartJsProvider) {
    // Configure all charts
    ChartJsProvider.setOptions({
      colours: ['#FF5252', '#FF8A80'],
      responsive: false
    });
    // Configure all line charts
    ChartJsProvider.setOptions('Line', {
      datasetFill: false
    });
  }])
  .controller("LineCtrl", ['$scope', '$timeout', function ($scope, $timeout) {

  $scope.labels = ["January", "February", "March", "April", "May", "June", "July"];
  $scope.series = ['Series A', 'Series B'];
  $scope.data = [
    [65, 59, 80, 81, 56, 55, 40],
    [28, 48, 40, 19, 86, 27, 90]
  ];
  $scope.onClick = function (points, evt) {
    console.log(points, evt);
  };

  // Simulate async data update
  $timeout(function () {
    $scope.data = [
      [28, 48, 40, 19, 86, 27, 90],
      [65, 59, 80, 81, 56, 55, 40]
    ];
  }, 3000);
}]);

【问题讨论】:

  • 您在 html 中缺少 ng-app="app" 指令,并且控制器未在 html 中设置。在正文中添加 ng-app="app",并将 canvas 标签包装在一个 div 中,并在其上添加 ng-controller="LineCtrl" 指令。
  • 谢谢。我做到了。但它仍然无法正常工作@Anfelipe。 angular.module("app",["chart.js"]) 中的 chart.js 文件是什么
  • 'chart.js' 不是文件,这是您要注入的模块的名称。
  • @Anfelipe 谢谢。但它不起作用。

标签: angularjs charts angular-chart


【解决方案1】:

您需要添加chart.js 库的引用才能使您的图表正常工作。由于 angular-chart.js 内部使用了 chart.js 库的 Chart 对象。

【讨论】:

  • @Thameem 很高兴为您提供帮助.. 谢谢 :)
  • 好吧,我也被这个问题困住了,我确定我错过了什么,如果你通过 NPM 包管理器添加包,为什么我必须包含 chart.js,包还没有将它作为依赖项包含在内?您不认为它会包含它以方便使用吗?!
【解决方案2】:

我把我在 cmets 中提到的更正,ng-app 和 ng-directives 丢失了。

index.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>school</title>
        <link rel="stylesheet" href=
  "http://cdn.rawgit.com/jtblin/angular-chart.js/master/dist/angular-chart.css" type=
  "text/css" />
  <script src="http://cdn.rawgit.com/nnnick/Chart.js/master/Chart.min.js" type=
  "text/javascript">
</script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"
  type="text/javascript">
</script>
  <script src=
  "http://cdn.rawgit.com/jtblin/angular-chart.js/master/dist/angular-chart.js"
  type="text/javascript">
</script>

        <script type="text/javascript" src="js/script.js"></script>
    </head>
    <body ng-app="app">
      <div ng-controller="LineCtrl">
        <canvas id="line" class="chart chart-line" chart-data="data" chart-labels="labels" 
                    chart-legend="true" chart-series="series" chart-click="onClick"></canvas> 
        </div>
    </body>
</html>

script.js

angular.module("app", ["chart.js"]) // here i couldn't understand about chart.js fil
  // Optional configuration
  .config(['ChartJsProvider', function (ChartJsProvider) {
    // Configure all charts
    ChartJsProvider.setOptions({
      colours: ['#FF5252', '#FF8A80'],
      responsive: false
    });
    // Configure all line charts
    ChartJsProvider.setOptions('Line', {
      datasetFill: false
    });
  }])
  .controller("LineCtrl", ['$scope', '$timeout', function ($scope, $timeout) {

  $scope.labels = ["January", "February", "March", "April", "May", "June", "July"];
  $scope.series = ['Series A', 'Series B'];
  $scope.data = [
    [65, 59, 80, 81, 56, 55, 40],
    [28, 48, 40, 19, 86, 27, 90]
  ];
  $scope.onClick = function (points, evt) {
    console.log(points, evt);
  };

  // Simulate async data update
  $timeout(function () {
    $scope.data = [
      [28, 48, 40, 19, 86, 27, 90],
      [65, 59, 80, 81, 56, 55, 40]
    ];
  }, 3000);
}]);

我为它做了一个jsbin

【讨论】:

【解决方案3】:

这可能是 chart.min.js 和 angular-chart.min.js 文件的顺序问题。事实上 angular-chart.min.js 需要 chart.min.js 依赖。 angular-chart.min.js 检查chart.min.js,如果将chart.min.js 放在后面,则会产生错误。

<script src="/lib/chart.js/dist/Chart.min.js"></script>
<script src="/lib/angular-chart.js/dist/angular-chart.min.js"></script>

【讨论】:

    【解决方案4】:

    在遵循 Angular Chart 官方文档 (http://jtblin.github.io/angular-chart.js/) 之后,我遇到了类似的问题(同样的错误)。就我而言,唯一缺少的(并且没有提到)是“index.html”中对“Chart,js”的引用。

    <script src="bower_components/Chart.js/Chart.min.js"></script>
    

    【讨论】:

      【解决方案5】:

      这对我有用:

      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.11/angular.min.js"></script>
      
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
      
      <script src="http://cdn.jsdelivr.net/angular.chartjs/latest/angular-chart.min.js"></script>
      

      【讨论】:

        猜你喜欢
        • 2019-04-14
        • 2014-09-11
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        相关资源
        最近更新 更多