vue使用element-ui tabs切換echarts解決寬度100%方式
vue使用element-ui tabs切換echarts 解決寬度100%
問題描述
vue+element項(xiàng)目中使用到了tab切換選項(xiàng)卡,其中有一個(gè)tab下的內(nèi)容是echarts,出現(xiàn)了echarts寬度縮減為100px無法繼承100%屬性。
問題
echarts渲染時(shí)tab選項(xiàng)卡display為none,所以width:100%沒有可繼承項(xiàng),被echarts自帶方法切割成100px。
解決思路
銷毀組件,在tab選項(xiàng)卡被選中時(shí)重新渲染組件,這個(gè)時(shí)候就會有寬度繼承。
第一種:通過 v-if 重新渲染組件即可。
<template> ? <div> ? ? <el-tabs v-model="activeName" @tab-click="handleClick"> ? ? ? ? <el-tab-pane label="學(xué)生實(shí)習(xí)統(tǒng)計(jì)" name="1"> ? ? ? ? ? ? <xiaobear-bar-chart ref="child" v-if="activeName==='1'"/> ? ? ? ? </el-tab-pane> ? ? ? ? <el-tab-pane label="學(xué)生周記統(tǒng)計(jì)" name="2"> ? ? ? ? ? ? <xiaobear-pie-chart ref="second" v-if="activeName==='2'"/> ? ? ? ? </el-tab-pane> ? ? </el-tabs> ? </div> </template>
<script>
? export default {
? ? name: "IncomeStatistics",
? ? data() {
? ? ? return {
? ? ? ? activeName: '1', //當(dāng)前激活的標(biāo)簽頁
? ? ? };
? ? },
? ? methods: {
? ? ? //切換標(biāo)簽頁時(shí)觸發(fā)
? ? ? handleClick(tab, event) {
? ? ? ? this.activeName = tab.name;
? ? ? },
? ? }
? }
</script>?第二種:延時(shí)調(diào)用echart的resize()方法即可
methods:{
? ? handleClick(tab, event) {
? ? ? if (tab.name === 'second') {
? ? ? ? this.$nextTick(() => {
? ? ? ? ? this.$refs.second.chart.resize()
? ? ? ? })
? ? ? }
? ? },
}第三種:給標(biāo)簽添加lazy屬性
<el-tab-pane :laze="true"> ? ? <ToexamineLine ref="child"/> </el-tab-pane>
vue el-tabs切換 不顯示echarts 寬度為0
1.通過echarts不同的id,寫不同的圖,調(diào)用接口展示不同的圖
<el-tabs v-model="activeName" @tab-click="handleClick"> ? ? <el-tab-pane label="電廠" name="dc" > ? ? ? ? <div :id="'myChart1'" style="width:100%;height:160%;"></div> ? ? </el-tab-pane> ? ? <el-tab-pane label="變電站" name="bdz" > ? ? ? ? <div :id="'myChart2'" style="width:100%;height:160%;"></div> ? ? </el-tab-pane> </el-tabs>
methods: {
initChart1() {
? ? ? ? this.chart1 = echarts.init(document.getElementById("myChart1"));
? ? ? ? var option = {
? ? ? ? ? //內(nèi)容省略
? ? ? ? };
? ? ? ? this.gsList = [];
? ? ? ? this.dsList = [];
? ? ? ? this.chart1.setOption(option, true)
? ? ? },
? ? ? initChart2() {
? ? ? ? this.chart2 = echarts.init(document.getElementById("myChart2"));
? ? ? ? var option = {
? ? ? ? ? //內(nèi)容省略
? ? ? ? };
? ? ? ? this.gsList = [];
? ? ? ? this.dsList = [];
? ? ? ? this.chart2.setOption(option, true)
? ? ? },
? ? //標(biāo)簽頁
? ? ? handleClick(tab, event) {
? ? ? ? this.activeName == tab.name;
? ? ? ? if(this.activeName == 'dc'){
? ? ? ? ? this.queryForm.type = 'dc'
? ? ? ? ? this.getList()
? ? ? ? }else if(this.activeName == 'bdz'){
? ? ? ? ? this.queryForm.type = 'bdz'
? ? ? ? ? this.getList()
? ? ? ? }
? ? ? },
? ? ?getList(){
? ? ? ? //圖
? ? ? ? if(this.activeName == 'dc'){
? ? ? ? ? getDwgs(this.queryForm).then((res) => {
? ? ? ? ? ? this.echartsList = res.list
? ? ? ? ? ? for(let i=0;this.echartsList.length>i;i++){
? ? ? ? ? ? ? this.dsList.push(this.echartsList[i].ds)
? ? ? ? ? ? ? this.gsList.push(this.echartsList[i].gs)
? ? ? ? ? ? }
? ? ? ? ? ? this.$nextTick(() => {
? ? ? ? ? ? ? this.initChart1()
? ? ? ? ? ? })
? ? ? ? ? })
? ? ? ? }else if(this.activeName == 'bdz'){
? ? ? ? ? getDwgs(this.queryForm).then((res) => {
? ? ? ? ? ? this.echartsList = res.list
? ? ? ? ? ? for(let i=0;this.echartsList.length>i;i++){
? ? ? ? ? ? ? this.dsList.push(this.echartsList[i].ds)
? ? ? ? ? ? ? this.gsList.push(this.echartsList[i].gs)
? ? ? ? ? ? }
? ? ? ? ? ? this.$nextTick(() => {
? ? ? ? ? ? ? this.initChart2()
? ? ? ? ? ? })
? ? ? ? ? })
? ? ? ? }
? ? ? },
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Element-ui table中過濾條件變更表格內(nèi)容的方法
下面小編就為大家分享一篇Element-ui table中過濾條件變更表格內(nèi)容的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
VeeValidate在vue項(xiàng)目里表單校驗(yàn)應(yīng)用案例
這篇文章主要介紹了VeeValidate在vue項(xiàng)目里表單校驗(yàn)應(yīng)用案例,VeeValidate是Vue.js的驗(yàn)證庫,它有很多驗(yàn)證規(guī)則,并支持自定義規(guī)則,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-05-05
Vue3實(shí)戰(zhàn)學(xué)習(xí)配置使用vue?router路由步驟示例
這篇文章主要為大家介紹了Vue3實(shí)戰(zhàn)學(xué)習(xí)配置使用vue?router路由步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
vue項(xiàng)目本地開發(fā)完成后部署到服務(wù)器后報(bào)404錯(cuò)誤解決方案
很多時(shí)候我們發(fā)現(xiàn)辛辛苦苦寫的VueJs應(yīng)用經(jīng)過打包后在自己本地搭建的服務(wù)器上測試沒有什么問題,但真正放在服務(wù)器上后會發(fā)現(xiàn)或多或少的問題,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目本地開發(fā)完成后部署到服務(wù)器后報(bào)404錯(cuò)誤的解決方案,需要的朋友可以參考下2024-01-01

