今天看了下echarts教程之中的異步加載柱狀圖,我按照教程中的代碼敲出來之后再運行,就報了一個
Error: Component series. not exists. Load it first.
的錯誤,話不多說,教程中的代碼如下所示:
1 function fetchData(cb) { 2 // 通過 setTimeout 模擬異步加載 3 setTimeout(function () { 4 cb({ 5 categories: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"], 6 data: [5, 20, 36, 10, 10, 20] 7 }); 8 }, 1000); 9 } 10 11 // 初始 option 12 option = { 13 title: { 14 text: '異步數據加載示例' 15 }, 16 tooltip: {}, 17 legend: { 18 data:['銷量'] 19 }, 20 xAxis: { 21 data: [] 22 }, 23 yAxis: {}, 24 series: [{ 25 name: '銷量', 26 type: 'bar', 27 data: [] 28 }] 29 }; 30 31 fetchData(function (data) { 32 myChart.setOption({ 33 xAxis: { 34 data: data.categories 35 }, 36 series: [{ 37 // 根據名字對應到相應的系列 38 name: '銷量', 39 data: data.data 40 }] 41 }); 42 });
這樣則會出錯,因為初始化option中的series屬性並沒有與myCharts.setOption中的series屬性一一對應,因此導致series並未被完全加載。
修改后的部分如下:
1 function fetchData(cb){ 2 setTimeout(function(){ 3 cb({ 4 categories:["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子","新增"], 5 data:[5,20,36,10,10,20,60] 6 }); 7 },1000); 8 } 9 // 初始化option 10 option={ 11 title:{ 12 text:'異步數據加載' 13 }, 14 tooltip:{}, 15 legend:{ 16 data:['銷量'] 17 }, 18 xAxis:{ 19 data:[] 20 }, 21 yAxis:{}, 22 series:[{ 23 name:'銷量', 24 type:'bar', 25 data:[] 26 }] 27 } 28 fetchData(function(data){ 29 mychart.setOption({ 30 xAxis:{ 31 data:data.categories 32 }, 33 yAxis:{}, 34 series:[{ 35 name:'銷量', 36 type:'bar', 37 data:data.data 38 }] 39 }); 40 });
這樣問題就解決了!