首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用chart.js与角度图结合使用要求

如何使用chart.js与角度图结合使用要求
EN

Stack Overflow用户
提问于 2015-07-08 08:59:38
回答 1查看 2.4K关注 0票数 1

尝试使用requirejs实现延迟加载。当我不使用图表的时候,一切都很好。但是当我想用图表(角图)时,就不会失败了!将chart.js角图结合使用。

这里是main.js:

代码语言:javascript
复制
 require.config({ 
baseUrl: "http://localhost/ums/angular/js",
    paths: {
        'angular': 'lib/angular.min',
        'ngRoute': 'lib/angular-route.min',
        'flash': 'lib/angular-flash',
        'angular-loading-bar': 'lib/loading-bar.min',
        'ngAnimate': 'lib/angular-animate.min',
        'ui.bootstrap': 'lib/ui-bootstrap-tpls-0.12.0',
        'uniqueField': 'admin/directives/angular-unique',
        'input_match': 'admin/directives/angular-input-match',
        'uniqueEdit': 'admin/directives/angular-unique-edit',
        'angularAMD': 'lib/angularAMD.min',
        'chart.js': 'lib/Chart.min', 
        'angular-chart':'lib/angular-chart.min',   
        'app': 'admin/app',
        },
        waitSeconds: 0,
         shim: { 
         'angular': { exports: 'angular'},
        'angularAMD': { deps: ['angular']},
        'angular-chart': { deps: ['angular','chart.js']},
        'ngRoute':{ deps: ['angular']},
        'angular-loading-bar':{ deps:['angular'] },
        'ngAnimate': { deps:['angular'] } ,
        'ui.bootstrap': {deps: ['angular'] },
        'uniqueField': {deps: ['angular'] },
        'input_match': {deps: ['angular'] },
        'uniqueEdit': {deps: ['angular'] },
        'flash': {deps: ['angular'] },
        },
        deps: ['app']
    });

这里是app.js:

代码语言:javascript
复制
var base_url="http://localhost/ums/";
define(['angularAMD', 'ngRoute','flash','angular-loading-bar','ngAnimate','uniqueField','input_match','angular-chart'], function (angularAMD) {
var app = angular.module('angularapp', ['ngRoute','flash','angular-loading-bar','ngAnimate','uniqueField','input_match','angular-chart']);  
app.config(['$routeProvider', function($routeProvider){
    $routeProvider
        .when('/dashboard', angularAMD.route({
                title : 'Dashboard',
                controller : 'dashboardCtrl',
                templateUrl : base_url+'angular/partials/admin/dashboard.php',
                controllerUrl: base_url+'angular/js/admin/controllers/dashboardCtrl.js'
            }))

//.......................all routing ............//
 .otherwise({
            redirectTo : '/dashboard'
        });
}]);
app.run(['$rootScope', '$route', function($rootScope, $route) {
    $rootScope.$on('$routeChangeSuccess', function() {
        document.title = $route.current.title;
    });
}]);


  // Bootstrap Angular when DOM is ready
    return angularAMD.bootstrap(app);

});

如何实现他们之间的依赖?有什么建议吗?有什么例子吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-10 10:40:05

来自文档- http://requirejs.org/docs/api.html

如果模块ID具有以下特征之一,则将通过“+ paths”配置传递ID而不是,并将其视为与文档相关的常规URL: ·以".js“结尾。 以"/“开头。 ·包含一个URL协议,如"http:“或"https:”。

这将启动您的chart.js模块,RequireJS将尝试从包含运行RequireJS的HTML页面的目录中加载chart.js。

注意-您应该能够在您的开发工具>网络选项卡中看到这一点。请注意,对chart.js的请求并没有到达您期望的路径。

这似乎是一个错误(带有角图)--参见typeahead.js - https://github.com/twitter/typeahead.js/issues/1211的类似问题。

有几种方法可以解决这个问题

  1. 修改角图代码,使期望的模块ID成为没有点的东西,比如chartjs.然后将上述配置中的chart.js更改为chartjs。这样做是正确的。
  2. 将chart.min.js文件重命名为chart.js,并将其放在与运行RequireJS的html文件相同的文件夹中。这充其量不过是一个非常临时的解决办法。
  3. 将nodeIDCompat设置为true -这将使模块ID something.js等效于某些内容。然后将配置中的模块ID更改为chart。所以就像 require.config({ nodeIdCompat: true,path:{‘图表’:base_url + '/lib/Chart.min',.

如果您正在使用r.js来压缩/合并,那么在解决这个问题之前,您可能也需要测试它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31288001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档