【发布时间】:2014-09-16 09:27:23
【问题描述】:
我正在尝试通过创建 Angular JS 指令来使用 Morris JS 创建图形。我的指令代码是:
Reporting.directive('morrisLine', function(){
return {
restrict: 'EA',
template: '<div id="call-chart">test2</div>',
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 <anonymous> (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), <anonymous>:1:9523)
at n.eval (eval at <anonymous> (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), <anonymous>:1:3297)
at n.t.Grid.r.setData (eval at <anonymous> (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), <anonymous>:1:3888)
at n.r (eval at <anonymous> (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), <anonymous>:1:1680)
at new n (eval at <anonymous> (http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3:4904), <anonymous>: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) <div morris-line="" class="ng-isolate-scope ng-scope" style="position: relative;">
错误代码所指的部分是说的部分
element : element,
我是 Angular JS 和指令的新手,希望有人能指出我如何处理这个问题的正确方向。谢谢!
【问题讨论】:
-
由于元素未定义而产生的错误请给我们指令库的链接
-
嘿,我为此写了一个指令,用角度制作莫里斯图:github.com/jasonshark/ng-morris/blob/master/src/ngMorris.js 也可以通过凉亭获得:
bower install ngmorris --save
标签: javascript node.js angularjs angularjs-directive morris.js