繁体   English   中英

Morris.js数据(无法读取未定义的属性“ match”)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM