1.这里是因为下拉框里option使用了v-if来显示是否显示该选项
<el-select v-if="ruleForm.mergerToSelect!=='3'" filterable remote :remote-method="remoteMethod" :loading="loading" v-model="ruleForm.mergerToSelectId" v-el-select-loadmore="handleLoadmore" :placeholder="langs.choice" style="width:100%;" @change="getTipStr">
<el-option v-if="ruleForm.mergerToSelect==='1'" :label="langs.autoCustomer" value="0"></el-option>
<el-option v-if="ruleForm.mergerToSelect==='4'" :label="langs.autoSupplier" value="-1"></el-option>
<el-option v-if="ruleForm.mergerToSelect==='2'" :label="langs.autoContacts" value="-2"></el-option>
<el-option v-for="(item,index) in mergerToTargetList" :key="index" :label="item.name" :value="item.id" :title="item.name" style="width: 215px;">
</el-select>
2.初始化的时候默认显示ruleForm.mergerToSelect==='1'的这个选项
3.然后切换到ruleForm.mergerToSelect==='2',页面中选择框显示的是-2,刚开始以为是没有触发变更的问题,使用了$forceUpdate,是没有效果的
4.后来使用了v-show,居然就好了
--------------------------------------------------------
总结:所以就去查了一下v-if和v-show的区别,猜测是因为v-if当初始化的值为false的时候是不进行渲染的,等到变成true的时候才渲染,然而渲染也有时间差,所以导致名称没有显示出来,而v-show是初始化的时候不管是true false都会去渲染,所以不会出现问题
附详细说明链接:https://blog.youkuaiyun.com/ning0_o/article/details/56006528