页面报错Error: Initialize failed: invalid dom. 网上看了很多案例。
setTimeout延迟加载也用了
使用nextTick延迟加载也用了
也是在oumounted里面做的渲染
<div class="right" v-if="one" style="display: flex; flex-wrap: wrap">
<div
v-for="(item, index) in getCurrentPageData"
:key="index"
style="position: relative"
>
<div class="cahrtsItem" :id="'charts' + item.id"></div>
<div
class="riqi"
style="
position: absolute;
top: 10px;
right: 10px;
font-size: 14px;
color: #fff;
display: flex;
"
>
<div @click="fn1(item, item.id)" style="cursor: pointer">
<el-icon><CaretLeft /></el-icon>
</div>
<div>{{ item.day }}</div>
<div @click="fn2(item, item.id)" style="cursor: pointer">
<el-icon><CaretRight /></el-icon>
</div>
</div>
</div>
<div class="rightbutom">
<div @click="prevPage" class="button">上一页</div>
<div class="cont">{{ currentPage }}/{{ totalPages }}</div>
<div @click="nextPage" class="button">下一页</div>
</div>
</div>
```
``var initLine = (waterChartData, containerId) => {
var option = {
title: {
text: "XXX基地",
textStyle: {
color: "#ffffff", // 将图例文本颜色设置为白色
fontSize: 16, // 设置标题字体大小为16px
},
},
tooltip: {
trigger: "axis",
},
grid: {
left: "3%",
right: "4%",
top: "30%",
bottom: "10%",
containLabel: true,
},
legend: {
data: ["溶氧", "水温", "PH"],
top: "15%",
textStyle: {
color: "#ffffff", // 将图例文本颜色设置为白色
fontSize: 12, // 设置标题字体大小为16px
},
},
xAxis: {
type: "category",
data: ["0:00", "4:00", "8:00", "12:00", "16:00", "20:00"],
axisLabel: {
textStyle: {
color: "#ffffff", // 将文本颜色设置为白色
fontSize: 12,
},
},
},
yAxis: {
type: "value",
min: function (value) {
return value.min;
},
max: function (value) {
return value.max;
},
axisLabel: {
textStyle: {
color: "#ffffff", // 将文本颜色设置为白色
fontSize: 12,
},
},
},
series: [
{
name: "溶氧",
type: "line",
label: {
show: true,
position: "top",
},
lineStyle: {
color: "#e51450", // 将颜色设置为白色
fontSize: 12,
},
data: [
waterChartData?.["0:00"] ? waterChartData["0:00"].oxyty : "",
waterChartData?.["4:00"] ? waterChartData["4:00"].oxyty : "",
waterChartData?.["8:00"] ? waterChartData["8:00"].oxyty : "",
waterChartData?.["12:00"] ? waterChartData["12:00"].oxyty : "",
waterChartData?.["16:00"] ? waterChartData["16:00"].oxyty : "",
waterChartData?.["20:00"] ? waterChartData["20:00"].oxyty : "",
],
},
{
name: "水温",
type: "line",
label: {
show: true,
position: "top",
},
lineStyle: {
color: "#42e98e", // 将颜色设置为白色
fontSize: 12,
},
data: [
waterChartData?.["0:00"]
? waterChartData["0:00"].waterTemperature
: "",
waterChartData?.["4:00"]
? waterChartData["4:00"].waterTemperature
: "",
waterChartData?.["8:00"]
? waterChartData["8:00"].waterTemperature
: "",
waterChartData?.["12:00"]
? waterChartData["12:00"].waterTemperature
: "",
waterChartData?.["16:00"]
? waterChartData["16:00"].waterTemperature
: "",
waterChartData?.["20:00"]
? waterChartData["20:00"].waterTemperature
: "",
],
},
{
name: "PH",
type: "line",
label: {
show: true,
position: "top",
},
lineStyle: {
color: "#ead700", // 将颜色设置为白色
fontSize: 12,
},
data: [
waterChartData?.["0:00"] ? waterChartData["0:00"].ph : "",
waterChartData?.["4:00"] ? waterChartData["4:00"].ph : "",
waterChartData?.["8:00"] ? waterChartData["8:00"].ph : "",
waterChartData?.["12:00"] ? waterChartData["12:00"].ph : "",
waterChartData?.["16:00"] ? waterChartData["16:00"].ph : "",
waterChartData?.["20:00"] ? waterChartData["20:00"].ph : "",
],
},
],
};
// nextTick(()=>{
// const charts = echarts.init(document.getElementById(containerId));
// charts.setOption(option);
// })
chartsRef.value = document.getElementById(containerId);
if (chartsRef.value) {
var charts = echarts.init(chartsRef.value);
charts.setOption(option);
}
};`
最后就直接做了个判断 if (chartsRef.value) {
var charts = echarts.init(chartsRef.value);
charts.setOption(option);
} 解决的这个问题