如何在Echarts的關係圖中正確的引用dataTool而不報錯?
官網示例中的 var graph = echarts.dataTool.gexf.parse(xml);
報錯 Cannot read property "gexf" of undefined 是少引用了什麼么?
官方給的樣例是有問題的(主要是該給的dataTool工具沒給),請參照我修改過後的文件:
&
&
&
&
&
&
&
&
&
&&
&
&
可以注意到,我一共引入了三個JavaScript文件:
- echarts.js
- jquery.js
- dataTool.js
這三個文件分別來自
- echarts官網完整包
- jQuery
- echarts/dataTool.min.js at master · ecomfe/echarts · GitHub
然後你需要顯示這張圖表的數據文件:
http://echarts.baidu.com/gallery/data/asset/data/les-miserables.gexf
分別把JavaScript文件和數據文件放到工程的`js`目錄和`data`目錄下,就可以成功了。
如下圖所示:
以上。
強答一發:
陳坤 的回答已經寫出了官方代碼如何嵌入到自己代碼中運行
可是引用datatool的問題在於datatool.min.js可能已經不支持了.非前端人員對此文件內容無研讀能力,從baidu站點,或者那個答主github的鏈接.都報錯,然後我搜了datatool.js出現網站搜的結果
然後複製了完整的js出來不報錯了
Cannot read property "gexf" of undefined
從斷點來看,就是因為
var graph = echarts.dataTool.gexf.parse(xml);
echarts 對象從echarts.js中已經 獲取, datatool對象是undefined .如果按照我這個做法,datatool有內容了,說明我的方法可以解決此問題
開發環境:chrome+vs.
順便,運行時需要載入 .gexf文件內容,在vs調試使用iis express時候說沒有許可權需要 配置Mime
格式配了 application/octet-stream,iis可以搞定,iisexpress搞了好幾個格式都不行(text/plan)什麼的
然後我把.gexf改為.xml照樣能載入xml內容.
搞這麼個gexf存儲xml文件,算不算人為增加門檻?
Failed to load file:///E:/Echarts/data/asset/data/les-miserables.gexf: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
send @ jquery-3.2.1.min.js:4這個涉及到跨域問題了。。。。求大神指點
原來 dataTool.js 這個文件要用github的,官方的用不了,坑。最好那個回答,有點啰嗦。說重點就行了嘛。也就是官方那個dataTool.js要換成github的
我也是剛剛才知道!尼瑪坑了我好久,看了你的分析更清楚了
就是這個原因了,找了我一早上。
什麼原因,有知道的嗎?
var echarts = require("echarts");
require("echarts/src/chart/graph");
echarts.dataTool = require("echarts/extension/dataTool");
webpack.config.js
resolve: {
alias: {
echarts$: "echarts/src/echarts.js",
echarts: "echarts",
zrender$: "zrender/src/zrender.js",
zrender: "zrender/src"
}
},
推薦閱讀:
※如何保證用戶登錄時提交密碼已經加密?
※如何使用nodejs做爬蟲程序?
※Websocket為什麼在客戶端向服務端發送報文的時候需要掩碼加密,而服務端向客戶端不需要呢?
※SVG 具體的應用場景是怎樣的?為什麼代替 Flash 的是 Canvas 而不是 SVG 呢?
※如何評價浙江大學三名教授及一名研究生申請利用 defineProperty 做數據雙向綁定的專利?