现在用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页,就会出现表头错位,滚动条消失的情况!