簡體   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