vue数据更新后,视图不更新

背景:
点击选中表格中的某一项后,该行数据会回显到下面,可以进行修改,修改后,左侧表格回显修改的数量;
右侧表格为左侧表格选中行的子项,右侧表格的每一项需要通过 【数量/份 * 左侧加工数量 = 预计使用数量】改变预计使用数量列的数据,底部回显第一行的数据。
在这里插入图片描述

	// 左侧加工数量输入框,值改变,右侧所有的行预计使用数量都要变
    // storeData左侧表格,paperNoData右侧表格
    qtyChange(e) {
    
    
      let curItem = {
    
    ...this.storeData[this.goodsQuickInfo.index]}
      if (isNumber(e)) {
    
    
        // 预计使用数量=左侧的加工数量×原料的数量/份
        curItem.qty = this.clearNoNumTwo(e)
        // 左侧选中行底部 加工数量更新
        this.$nextTick(()=> {
    
    
          this.$set(this.goodsQuickInfo, 'qty',curItem.qty)
        })
        // 右侧表格的每一项计算
        curItem.processPlanSourceGoodsVos.map((item) => {
    
    
          item.qty = (curItem.qty * item.avgQty).toFixed(2)
        })
      } else {
    
    
        curItem.qty = ''
        this.$set(this.goodsQuickInfo, 'qty', '')
        curItem.processPlanSourceGoodsVos.map((item) => {
    
    
          item.qty = ''
        })
      }
      this.storeData.splice(this.goodsQuickInfo.index, 1, curItem)
      this.$nextTick(() => {
    
    
        // 解决右侧表格数据更新,视图不更新,通过...扩展运算符浅拷贝重新赋值
        this.paperNoData = [...curItem.processPlanSourceGoodsVos]
      })
      // 右侧选中行的 预计使用数量 更新
      if(this.paperNoData.length !== 0) {
    
    
        this.$set(this.goodsQuickInfo2, 'qty', this.paperNoData[this.goodsQuickInfo2.index].qty)
      }
    },

解决问题的3种方法
1.this.$nextTick()
2.this.$forceUpdate()
3.this.$set(obj, key, value)
4、更新表格数组使用...

参考文章:
关于vue中elementUI的input和select框值无法回显的问题解决
VUE中数组更新后,页面没有动态刷新问题
vue数据不更新的原因(vue中数据更改了,但是视图没有更新)
8种Vue中数据更新了但页面没有更新的情况
Vue数据更新但页面没有更新的多种情况
ES6 新特性 扩展运算符(…)详解

猜你喜欢

转载自blog.csdn.net/guairena/article/details/125914674