使用 vuetify UI,其他UI也是同理。

一、echarts不显示问题原因:

1.tab的绑定事件onChange还是onClick

2.找不到对应id的Dom

二、解决方案

1.看下面的代码,两个事件应该分别在两个标签里加载。这个是我加debugger硬试出来的。

<v-tabs
                          v-model="tab"
                          align-with-title
                          background-color="blue lighten-3"
                          @change="tabsChange(tab)"
                  >
<v-tab
                              v-for="(item,i) in tabItems"
                              :key="i"
                              @click="tabClick(i)"
                      >

事件的执行顺序:click事件才是你点击标签时能触发的方法,之后标签把model里的tab值给改了,再触发change事件。

① 如果只有点击标签tab的情况下才切换,可以只写click事件。

②除了点击标签tab,还有从A标签的画面进去B标签的情况,就需要追加change事件,标记flag从哪里跳转过来的。

③如果有哪个tab不能通过点击进去,只能从其他tab的画面进。tab的写法如下“disable”

                      <v-tab @click="tabClick(2)" disabled>
                          <div
                                  :class="[`text-h6`,'font-weight-medium']"
                                  v-text="tabItems[2]">
                          </div>
                      </v-tab>
      let myecharts = this.$echarts.init(document.getElementById('subecharts0'));
      // tab第二页打开
      myecharts.on('click', (params) => {
        this.km1Index = params.dataIndex;
        this.tab = 1;
        this.tabClickFlg = false;
        this.tabClick(this.tab);
      });

2.图形的渲染一定要在div的Dom加载之后

①一般情况下,每次画echarts之前调用“this.$nextTick”,相当于setTimeout延时执行。

this.$nextTick(() => {
          this.zhutu1wei('subecharts0', stitle, xdata, sdata);
        })

②有tab情况下,需要tab内组件在加载时渲染。组件如果比画图早渲染就显示不出新的图形。利用“v-tab-item”中的“eager” ,作用是将强制组件内容在加载时呈现,如果存在内容的话,则不会在 DOM 中渲染。

 <v-tabs-items v-model="tab">
                      <v-tab-item
                              v-for="(item,i) in tabItems"
                              :key="i"
                              eager
                      >
                          <v-card flat color="blue lighten-5">
                              <v-card-text>
                                
                                      <v-row>
                                          <v-col>
                                              <div :id="'subecharts'+i"
                                                   :style="{width: '900px', height: '500px'}"></div>
                                          </v-col>
                                      </v-row>
                              </v-card-text>
                          </v-card>
                      </v-tab-item>
                  </v-tabs-items>

以上。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐