v-model双向绑定-解决编辑弹框修改数据后页面数据跟着改变的问题

发生场景:在vue的项目中,经常会遇到表格弹框的使用,点击编辑按钮时候把当前行的数据赋值给弹框内并渲染弹框数据。使用v-model弹框数据改变发现页面数据也跟着改变了,而在实际工作当中,当点击弹框的保存按钮,表格数据才要更新。

解决方法:

把自己的数据进行拷贝一份

原始数据 tableData

那么我就 新建新的数据 newData

第一种方案:this.newData={...this.tableData}

或者  第二种方案: this.newData=JSON.parse(JSON.stringify(this.tableData))

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在Vue3和ElementUI中使用el-select组件的multiple属性进行单选或多选,并且想要在点击编辑按钮后,弹出一个弹框来显示选择的结果,可以使用ElementUI的Dialog组件来实现。具体步骤如下: 1. 在父组件中,给el-select绑定一个v-model,用来存储选择的,并在点击编辑按钮时,打开一个Dialog弹框,用来显示选择结果。 2. 将选择结果传递给Dialog弹框,在弹框中显示选择结果。 下面是一个简单的示例代码: 父组件: ```html <template> <div> <el-select v-model="selected" multiple> <el-option label="Option 1" value="1"></el-option> <el-option label="Option 2" value="2"></el-option> <el-option label="Option 3" value="3"></el-option> </el-select> <el-button @click="edit">编辑</el-button> <el-dialog :visible.sync="dialogVisible" title="选择结果"> <div v-for="item in selected" :key="item">{{ item }}</div> </el-dialog> </div> </template> <script> import { ref } from 'vue' export default { setup() { const selected = ref([]) // 存储选择结果的数组 const dialogVisible = ref(false) // 控制Dialog弹框显示的变量 const edit = () => { // 打开Dialog弹框 dialogVisible.value = true } return { selected, dialogVisible, edit } } } </script> ``` 在父组件中,我们使用了Vue3的Composition API来定义了存储选择结果的数组和控制Dialog弹框显示的变量,并在edit方法中,打开了Dialog弹框。 在Dialog弹框中,我们使用了v-for来遍历选择结果数组,将每个选择结果显示在弹框中。 注意,我们使用了v-bind.sync来将dialogVisible属性和Dialog组件中的visible属性进行了双向绑定,这样就可以在父组件中控制Dialog弹框的显示和隐藏。 子组件: ```html <template> <div> <el-select v-model="selected" :multiple="true"> <el-option label="Option 1" value="1"></el-option> <el-option label="Option 2" value="2"></el-option> <el-option label="Option 3" value="3"></el-option> </el-select> </div> </template> <script> import { defineProps, ref, watch } from 'vue' export default { props: { selected: { type: Array, default: () => [] } }, setup(props) { const selected = ref(props.selected) // 存储选择结果的数组 // 监听父组件传递的选择结果,更新子组件的选择结果 watch(() => props.selected, (newValue) => { selected.value = newValue }) return { selected } } } </script> ``` 在子组件中,我们使用了props来接收父组件传递的v-model,并在el-select中绑定这个,用来实现选择功能。 在父组件中,我们使用v-bind.sync来将父组件中的selected属性和子组件中的selected属性进行了双向绑定,这样就可以实现在父组件中点击编辑后,Dialog弹框内部的回显数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值