如何在Angular JS中为Morris JS图创建一个指令

 mobiledu2502938737 发布于 2023-02-13 14:48

我试图通过创建一个Angular JS指令使用Morris JS创建一个图形.我的指令代码是:

Reporting.directive('morrisLine', function(){
  return {
    restrict: 'EA',
    template: '
test2
', scope: { data: '=', //list of data object to use for graph xkey: '=', ykey: '=' }, link: function(scope,element,attrs){ new Morris.Line({ element: element, data: [ { year: '2008', value: 20 }, { year: '2009', value: 10 }, { year: '2010', value: 5 }, { year: '2011', value: 5 }, { year: '2012', value: 20 } ], xkey: '{year}', ykey: ['value'], }); } }; });

我在浏览器上检查控制台时收到的错误代码是:

TypeError: Cannot call method 'match' of undefined
    at Object.t.parseDate (eval at  (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), :1:9523)
    at n.eval (eval at  (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), :1:3297)
    at n.t.Grid.r.setData (eval at  (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), :1:3888)
    at n.r (eval at  (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), :1:1680)
    at new n (eval at  (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), :1:11953)
    at link (http://127.0.0.1:8000/static/js/app/directives/directives.js:94:20)
    at j (http://127.0.0.1:8000/static/js/libs/angular/angular.min.js:43:157)
    at e (http://127.0.0.1:8000/static/js/libs/angular/angular.min.js:38:463)
    at e (http://127.0.0.1:8000/static/js/libs/angular/angular.min.js:38:480)
    at e (http://127.0.0.1:8000/static/js/libs/angular/angular.min.js:38:480) 

错误代码指向的部分是说的部分

 element : element, 

我是Angular JS和指令的新手,我希望有人能指出我如何处理这个问题的正确方向.谢谢!

1 个回答
  • 这就是我对莫里斯图表的看法.例子是条形图:

    sampleApp.directive('barchart', function() {
    
        return {
    
            // required to make it work as an element
            restrict: 'E',
            template: '<div></div>',
            replace: true,
            // observe and manipulate the DOM
            link: function($scope, element, attrs) {
    
                var data = $scope[attrs.data],
                    xkey = $scope[attrs.xkey],
                    ykeys= $scope[attrs.ykeys],
                    labels= $scope[attrs.labels];
    
                Morris.Bar({
                        element: element,
                        data: data,
                        xkey: xkey,
                        ykeys: ykeys,
                        labels: labels
                    });
            }
    
        };
    
    });
    

    然后你可以使用它与这个元素:

    <barchart xkey="xkey" ykeys="ykeys" labels="labels" data="myModel"></barchart>
    

    其中myModel是要在指令中传递的数据数组,它应该具有与morris图表兼容的正确格式.仔细研究该对象如何在指令中的"link"函数中传递.

    这是一个完整的工作示例:http://jsbin.com/ayUgOYuY/5/edit?html,js,output

    2023-02-13 14:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有