vue $refs动态拼接获取值问题
2023-01-24 08:37:43 来源:易采站长站 作者:
目录vue$refs动态拼接获取值vue$refs不能动态拼接问题项目需求:动态增减表单并验证总结vue$refs动态拼接获取值div是循环所以img的ref是动态设置的要获取对应点击的...
目录
vue $refs动态拼接获取值vue $refs不能动态拼接问题
项目需求:动态增减表单并验证
总结
vue $rjavascriptefs动态拼接获取值
div是循环 所以img 的ref是动态设置的 要获取对应点击的
<div class="unionLiveDiv" v-for="(item,index) in cityLivelist" :key='index' > <div class="unionLiveImg"> <input type="file" v-if='item.redact' @change='filePush1(cityLivelist,index,"img"+index)'/> <img :src='$store.state.imgSrc+item.cityLiveImg' v-if='item.cityLiveImg' :ref="'img'+index"/> </div> </div>
//这里动态传值获取不到 filePush1(list,index,img){ console.log(this.$refs.img) //这样写会拿不到 img 是个动态值 这会直接已img为值去获取 拿到的是undefined }
要遍历循环 就可以获取到值
filePush1(list,index,img){ let that=this let refs=that.$refs for(let key in refs){ console.log(refs[img]) //这里遍历循环所有的 refs值 就可以拿到动态拼接$refs所要的对应值 这的img 是动态传的值 } }
vue $rhttp://www.cppcns.comefs不能动态拼接问题
项目需求:动态增减表单并验证
代码如下:
<el-form label-width="110px" :inline="true" v-for="(item, i) in formData" :key="'add' + i" :ref="'addForm' + i" :rules="addRulse" :model="formData[i]" > ... </el-form>
this.contentReqVoList.forEach((el, i) => { console.log(this.$refs['addForm' + i]) this.$refs.addForm['addForm' + i].validate(v => { ... }) })
错误如下
原因:
因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候它们还不存在, $refs 也不是响应式的,不能在模板中做数据绑定;当 ref 和 v-for 一起使用的时候,你得到的引用将会是一个包含了对应数据源的这些子组件的数组。
修改代码如下:
<el-form label-width="110px" :inline="true" v-for="(item, i) in formData" :key="'add' + i" ref="addForm" :rules="addRulse" :model="formData[i]" > ... </el-form>
this.contentReqVoList.forEach((el, i) => { this.$refs.addForm[i].validate(v => { ... }) })
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
如有侵权,请发邮件到 [email protected]
最新图文推荐
相关文章
-
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除
最近有使用vue+elementUI实现多图片上传的需求,遂做此纪录。 本次主要写一下前端的实现细节,至于后台以Multipart[ ]数组接收即可,不再赘述,网上一搜大把文章可供参考。 本次使用2020-03-23
-
Vue-router 报错NavigationDuplicated的解决方法
版本:3.1.x 报错原因: 使用push()、replace()进行导航时,不能重复导航到当前路由。 解决办法: 方法1:在定义路由的文件中router/index.js const originalPush = VueRouter.prototype.pushVueRouter.protot2020-03-31