![](/img/trans.png)
[英]Morris.js Uncaught TypeError: Cannot read property 'match' of undefined
[英]Morris.js data (Cannot read property 'match' of undefined)
我已经为这个问题困扰了几天。 我试图在我的页面之一中使用Morris Chart显示从SQL数据库收集的统计信息。 但是我无法使其正常工作。 归结为:
如果我在“数据”字段中手动输入数据,一切都很好。 但是,如果我将数据放在变量中并在“数据”字段中引用变量,则会得到:
无法读取未定义的属性“匹配”。
有什么区别?
这有效:
var chart = Morris.Line({ element: 'line-example', data: [{Timestamp:'2015-05-20 10:00:00',Diastolic:110,Systolic:90,Pulse:65}], xkey: 'Timestamp', ykeys: ['Diastolic', 'Systolic', 'Pulse'], labels: ['Diastolic', 'Systolic', 'Pulse'] });
这不起作用:
var mydata = "[{Timestamp:'2015-05-20 10:00:00',Diastolic:110,Systolic:90,Pulse:65}]"; var chart = Morris.Line({ element: 'line-example', data: mydata, xkey: 'Timestamp', ykeys: ['Diastolic', 'Systolic', 'Pulse'], labels: ['Diastolic', 'Systolic', 'Pulse'] });
第一个是数组。 第二个,您将mydata定义为字符串。
尝试:
data: JSON.parse(mydata)
我遇到了类似的问题,这使我发疯,但是幸运的是我找到了解决方案。
我传递了一个javascript对象数组作为数据持有者,并使用该函数将其转换为JSON字符串。 它根本没有用...但是后来我尝试用JSON.parse解析字符串,并且运行顺利。 解析JSON字符串时,显然Morris JS代码中存在错误。
如果您正在使用像我这样的对象数组,请尝试以下操作:
var area = new Morris.Area({
element: 'revenue-chart',
resize: true,
data: JSON.parse(JSON.stringify(data)), //data is an array of objects
xkey: 'date',
ykeys: ['npubs_t', 'npubs_f'],
labels: ['T', 'F'],
lineColors: ['#a0d0e0', '#3c8dbc'],
hideHover: 'auto'
});
这样效果很好。 希望这对您或其他人有帮助。
我遇到了同样的问题。 我的问题是我已在我的angular(1.5)控制器中将数据变量声明为数组:
data = [];
然后我从函数调用中获取值。 除morris.js中的折线图(角度morris是包装器)外,此方法均有效。 我将数据更改为
data = '';
效果很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.