elementui el-tabs实现多表格切换的时候,如何在当前tab页获取到其他表格的方法呢?

现在用el-tabs写了个tab页,tab页总共有5个页,每一页都放了一个表头互不相同的表格,我用v-if控制各个tab页的显示,如果不用v-if控制的话切换tab页的时候表头会错位,滚动条也会出现不显示的情况(具体原因还不清楚是什么导致的)。但是我在当前页面的一些操作需要调用各个表格的方法,如果我用v-if判断的话,就取不到表格里的方法了。
代码如下:
list.vue:

                          <el-tabs
                            v-model="activeNameTabGroup"
                            type="border-card"
                            @tab-click="handleClickTabGroup(activeNameTabGroup)"
                            :style="{'height':showTopPanel?'441.11px':'810px'}"
                            class="bom-tab-group">
                            <el-tab-pane label="A" name="material">
                                <PageBOM-A-MaterialItems
                                    :readOnly="readOnly"
                                    :readOnlyA="readOnlyA"
                                    :btnShow="!btnShow"
                                    ref="PageBOM-A-MaterialItems"></PageBOM-A-MaterialItems>
                            </el-tab-pane>
                            <el-tab-pane label="B" name="accessories">
                                <PageBOM-B-MaterialItems
                                    v-if="activeNameTabGroup == accessories"
                                    :readOnlyB="readOnlyB"
                                    :btnShow="!btnShow"
                                    ref="PageBOM-B-MaterialItems"></PageBOM-B-MaterialItems>
                            </el-tab-pane>
                            <el-tab-pane label="C" name="semi-manufactures">
                                <PageBOM-C-MaterialItems 
                                v-if="activeNameTabGroup == semi-manufactures"
                                :readOnlyC="readOnlyC" 
                                :btnShow="!btnShow" 
                                ref="PageBOM-C-MaterialItems"></PageBOM-C-MaterialItems>
                            </el-tab-pane>
                            <el-tab-pane label="D" name="special-making">
                                <PageBOM-D-MaterialItems
                                v-if="activeNameTabGroup == special-making"
                                :readOnlyD="readOnlyD" 
                                :btnShow="!btnShow" 
                                ref="PageBOM-D-MaterialItems"></PageBOM-D-MaterialItems>
                            </el-tab-pane>
                            <el-tab-pane label="E" name="interlining">
                                <PageBOM-E-MaterialItems 
                                v-if="activeNameTabGroup == interlining"
                                :colorReadOnlyE="colorReadOnlyE" 
                                :readOnlyE="readOnlyE" 
                                :btnShow="!btnShow" 
                                ref="PageBOM-E-MaterialItems"></PageBOM-E-MaterialItems>
                            </el-tab-pane>
                        </el-tabs>

每个表格我都单独写了一个组件,在这里直接引用了。
现在有问题的是这里:当我想用如下方式在list.vue里面调用对应表格的方法时,就会报错,说他undefined
this.$refs["PageBOM-B-MaterialItems"]. ,我自己是怀疑我用v-if判断了它们是否显示,所以在第一个tab显示的时候,其他的都没有显示,我用refs就找不到对应的表格,所以就获取不到对应的方法了
我现在想知道在这种情况下怎样才能调用其他表格的方法呢?

再补充一下,如果我去掉v-if是好用的,可以获取到各个表格里面的方法,但是这时候切换tab页,就会出现表头错位,滚动条消失的情况!

阅读 11.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题