this.$set() vue + element

27 篇文章 0 订阅
22 篇文章 0 订阅

这几天写管理后台,遇到一个问题,刚好记录一下

以下是功能截图
在这里插入图片描述
在这里插入图片描述
这个功能是放在一个弹窗中的,截图的位置是一个数组,点击添加一个tag,就新增一个对象,删除tag,就删除了这个数组对应的那个对象,关闭弹窗的时候,需要将整个数组清空,并且还原成图一的样子

// 点击新增tag
addStep: function () {
    this.form.experts.push({
        fileLists: [],
        avatar: '',
        name: '',
        introduction: '',
        tag: '',
        grade: 0
    })    
    this.$message.success('新增成功');
},

一切都很顺利,但是关闭弹窗需要重置到初始的时候,就开始疯狂报错undifind,后面想明白,是因为改变了值,但是视图没有更新的原因,所以使用this.$set()方法来更新视图

// 关闭弹窗以后清除数据,恢复到原始状态
cleanAll () {
	xxxx
	let experts = [{
	     avatar:  '',
	     tag: '',
	     introduction: '',
	     fileLists:[],
	     grade: 0,
	     name: ''
	   }]
	this.$set(this.form, 'experts', experts)
}

在工作中,先解决问题,然后再想为什么,翻翻文档

看看用法this.$set(obj, key, value)

vue的原理,在创建实例的时候,遍历data里的值,监听gettersetter方法,一旦这些值更新了,就去触发对应的视图更新。

上面我进行清空弹窗或者是返回的时候,其实相当于去更新了新的data,但是这个时候并没去触发到gettersetter,没有更新视图,所以报错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值