elementUI rules 判断 el-cascader控件修改值未生效

今天修改一个前端项目,增加一个多选字段,使用的是el-cascader控件,因页面是通过引用子页面组件形式使用,出现一个点选后再勾选原有值,输入框内不展示或取消后的也未正常隐藏,如果勾选的值是全新的则其他已选值也会被带出展示,好神奇~~~~~。

具体如下图:

各种尝试修改,隐藏屏蔽,还是不行。。。

最后发下一个之前遇到类似问题,就是引用子页面组件控件动态赋值时出现未及时更新情况。最后再组件中增加了点击事件方法,在方法里加了一句话就解决了。!!!!!

上代码:

html 复制代码
//父级页面应用子页面组件
<el-tab-pane label="基本资料" name="userinfo">
  <userInfo :user-data="user" :risk-list="riskList"/>
</el-tab-pane>

这里是子页面userInfo.vue页面应用el-cascader控件部分代码;其核心就再@change事件里面。

html 复制代码
//子页面使用控件部分代码    
<el-form-item  label="检测因素" prop="itemList">
      <el-cascader
        v-model="userData.itemList"
        placeholder="试试搜索"
        :options="riskList"
        :props="{ label: 'label', value: 'id', multiple: true  }"
        filterable @change="handleChangeCas"></el-cascader>
 </el-form-item>

验证必填代码:

javascript 复制代码
data() {
   const validateOrg = (rule, value, callback) => {
      if (!this.userData.itemList.length) {
        callback(new Error('检测因素不能为空'))
      } else {
        callback()
      }
  }
 return {
   // 表单校验
   rulesData: {
    itemList: [
          { type:'array', required: true, validator: validateOrg }
    ],
   }
 }
}

handleChageCas方法代码:

javascript 复制代码
 methods: {
    //刷新控件
    handleChangeCas(val){
      this.$forceUpdate()
    },
}

总结:最后发现因为引用页面,值没有被更新,需要手动更新(

复制代码
this.$forceUpdate()

)后才能生效。如果引用子页面**输入控件(el-input)/选择控件(el-select)**也出现类似情况可以使用此方法再@input事件执行。

html 复制代码
<el-form-item label="联系电话" prop="phonenumber">
      <el-input v-model="userData.phonenumber" maxlength="11" show-word-limit  @input="change($event)"/>
</el-form-item>
<el-form-item label="联系邮箱" prop="email">
      <el-input v-model="userData.email" @input="change($event)"/>
</el-form-item>
<el-form-item label="机构类型:" prop="organizationTypeAttr">
      <el-select v-model="userData.organizationTypeAttr" clearable multiple @input="change($event)">
        <el-option  v-for="dict in dict.type.organization_type"
                    :value="dict.value"
                    :label="dict.label"
                    :key="parseInt(dict.value)"></el-option>
      </el-select>
</el-form-item>
javascript 复制代码
    //解决输入框无法输入
    change() {
      this.$forceUpdate()
    },
相关推荐
YHHLAI2 分钟前
Vue 3 流式输出实战:从零掌握 LLM Streaming 与 SSE 协议
前端·javascript·vue.js
2601_9657984723 分钟前
Arrow Unlocker HTML5 Game Review: Keep Web Arcade Players Coming Back
前端·html·html5
不简说1 小时前
JS 代码技巧 vol.10 — 20 个 V8 引擎原理,解释"为什么这样写快"
前端·javascript·面试
醉城夜风~1 小时前
HTML常用标签详解学习博客:从基础标签到页面结构完整掌握
前端·学习·html
OpenTiny社区1 小时前
拒绝臃肿!TinyRobot从“AI 输入框”到“AI输入控制台”的可扩展进化
前端·vue.js
淼澄研学2 小时前
PyTorch深度学习实战:5个核心方法从0到1构建神经网络
前端·数据库·python
MartinYeung52 小时前
[论文学习]WASP:面向提示注入攻击的Web代理安全性基准测试
前端·网络·学习
lemon_sjdk3 小时前
从 ServletRequest 到 Spring 抽象:Web 请求的底层基石与演化
java·前端·spring
程序员黑豆3 小时前
鸿蒙应用开发之状态变化通知:@Watch 装饰器详解与实战
前端·harmonyos
swipe3 小时前
13|(前端转全栈)支付成功不等于结束:回调、幂等、超时关单和状态竞争
前端·后端·面试