5

angular-chart を使用しようとしていますが、依存関係を正しく追加する方法がわかりませんでした。次のエラー Uncaught TypeError: Cannot read property 'defaults' of undefined in the angular-chart.js が表示されます

(function (factory) {
  'use strict';
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
      define(['angular', 'chart.js'], factory);
  } else if (typeof exports === 'object') {
    // Node/CommonJS
      module.exports = factory(require('angular'), require('chart.js'));
  } else {
    // Browser globals
    factory(angular, Chart);
  }
}(function (angular, Chart) {
  'use strict';

  Chart.defaults.global.responsive = true;
  ....

angularchartの両方が定義されていないためです。

私の必要な設定は

'use strict';
require.config({
    baseUrl: '/',
    paths: {
		'angular': '/scripts/angular',
		'angular-route': '/scripts/angular-route',
		'ui-bootstrap': '/scripts/ui-bootstrap-tpls-0.13.0.min',
		'angular-animate': '/scripts/angular-animate.min',

		'chart': '/scripts/chart',
		'angular-chart': '/scripts/angular-chart',
		
		'data-utils': '/common/data-utils',
		'string-utils': '/common/string-utils',

        'app': '/config/app',
        'routes': '/config/routes'
    },
	shim: {
		'app': {
		    deps: ['angular', 'angular-route', 'ui-bootstrap', 'data-utils', 'string-utils', 'angular-chart']
		},
		
		'angular-route': {
			deps: ['angular']
		},
		'ui-bootstrap': {
		    deps: ['angular', 'angular-animate']
		},
		'angular-animate': {
		    deps: ['angular']
		},
		'angular-chart': {
		    deps: ['angular', 'chart']
		}
	}
});

require
(
    ['app'],
    function(app)
    {
        angular.bootstrap(document, ['ngAnimate', 'ui.bootstrap', 'app']);
    }
);

私のコントローラーは

define(['app'], function(app)
{
	app.controller('homeController',
    [
        '$scope',
        function($scope)
        {
            $scope.page =
            {
                title: 'Welcome to Easy Stitch'
            };

            $scope.labels = ['2006', '2007', '2008', '2009', '2010', '2011', '2012'];
            $scope.series = ['Series A', 'Series B'];

            $scope.data = [
              [65, 59, 80, 81, 56, 55, 40],
              [28, 48, 40, 19, 86, 27, 90]
            ];
        }
    ]);
});

これを除いて、他のすべての依存関係は正常に機能しています。誰か助けてください。

4

4 に答える 4

2

angular-chart.js を変更できます。

chart.js => チャート、

(function (factory) {
  'use strict';
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module
    define(['angular', 'chart'], factory);
  } else if (typeof exports === 'object') {
    // Node/CommonJS
    module.exports = factory(require('angular'), require('chart'));
  } else {
    // Browser globals
    factory(angular, Chart);
  }
于 2015-06-02T02:15:32.703 に答える
2

必要な構成ファイルの依存関係を修正する必要があると考えており、その後は正常に機能しています。

require
(
    ['app'],
    function(app)
    {
        angular.bootstrap(document, ['ngAnimate', 'ui.bootstrap', 'chart.js', 'app']);
    }
);

于 2015-05-29T07:49:00.087 に答える
0

angular-chart は、Chart.js モジュールが「chart.js」と呼ばれることを期待しているようです。

if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['angular', 'chart.js'], factory);
} ...

Chart.js 自体は匿名定義 ( ref ) を使用するため、名前を付けるのはあなた次第です。あなたはそれを「チャート」と名付けています:

require.config({
    paths: {
        ...
        'chart': '/scripts/chart', 
        ...

'chart.js'したがって、paths構成で呼び出すだけです。

于 2015-05-25T07:52:14.617 に答える
0

bower で angular-chart をインストールした後、変更する必要がありました

define(['angular', 'chart'], factory); 

の中へ

define(['angular', 'Chart'], factory)

Charts.js はチャートではなくチャートをエクスポートするためです。

于 2016-06-01T09:46:27.200 に答える