1.問題:
關於這兩天寫的一個APP需要在一個頁面用多個圖表,發現一個問題,只要啟動項目初始化首頁進來圖表會縮小,查找資料發現主要是因為div還沒有創建出來echarts就已經加載了,因為獲取不到寬高就會默認寬高100%為100px,所以會縮小在一起,注:我把容器寬高設置回px就解決了,但是我寫的是移動端需要適配所以必須rem。
解決方法:
利用百度查找,給echarts設置延遲加載,用
1:setTimeout包裹調用echarts函數設置延遲時間沒用
2:利用this.$nextTick來處理也沒用
3:用window.onresize = echarts.resize;也沒用
幾乎百度查到的大眾答案全部無效
后來轉變思維,既然都說了需要延遲調用,我為什么非要去把mounted里邊調用echarts方法來延遲呢?
於是乎我就直接在這個echarts里邊進行延遲,下邊是代碼,可能表達的不清楚,但是我相信用我這個方法可以解決大部分類似的問題
//初始化數據
initData() {
setTimeout(function(){ //在我們的echarts方法外邊直接套上setTimeout 然后設置上延時時間就可以解決了
// 基於准備好的dom,初始化echarts實例
var echarts = require("echarts");
var myChart = echarts.init(document.getElementById("main1"));
// 繪制圖表a
myChart.setOption({
// color: ["#FF8D56", "#69ADF2"],
tooltip: {
trigger: "item",
formatter: "{b}: {c} ({d}%)",
backgroundColor: 'rgba(0,0,0,0.4)',
border:0,
position: ["40%", "0%"],
textStyle : {
color: '#FFFFFF',
},
},
series: [
{
name: "",
type: "pie",
radius: ["30%", "70%"],
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
emphasis: {
label: {
show: true,
fontSize: "12",
fontWeight: "bold",
},
},
labelLine: {
show: false,
},
data: [
{
value: 1440000,
name: "已達成金額",
itemStyle: {
normal: {
//顏色漸變
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 1, color: "#FBB475" },
{ offset: 0.5, color: "#FF8D56" },
]),
},
},
},
{
value: 360000,
name: "已達成差額",
itemStyle: {
normal: {
//顏色漸變
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#3082D5" },
{ offset: 0.5, color: "#3F8DDC" },
],true),
},
},
},
],
},
],
});
},
),200}
