• vuejs上传图片| table的data更新了,但插槽的数据不能及时更新


    想实现的效果

    动态渲染的表格,点击“+”上传图片,把临时的图片链接temUrl渲染上去:
    导出_130811.gif

    问题描述

    manageTableData的数据结构:原本没有temUrl键值

    一开始我选择用插槽来动态渲染图片的临时链接:

    想调用函数把temUrl加进manageTableData去,来实现动态绑定,发现manageTableData确实改变了,然而插槽数据没有及时改变

    addImageFile(image){
      let id=image.data.id//传过来的行信息
      let file=image.file//传过来的文件
      let url=URL.createObjectURL(file)//临时链接
      let fileObj={file}
      let temUrlObj={temUrl:url}
      Object.assign(this.manageTableData.filter(item=>item.number==id)[0],fileObj,temUrlObj)
      console.log('this.manageTableData',this.manageTableData)
    }
    

    so,表格的图片没有及时更新怎么办!?

    解决方案

    由于找不到动态及时更新插槽数据的方法,于是我更换了策略,决定不用插槽来更新数据,而是新定义一个odd数组来储存临时文件并动态绑定在标签上:

    data(){
        return{
            odd:[]
        }
    }
    
    //添加临时图片文件
    addImageFile(image){
      let id=image.data.id//传过来的行信息
      let file=image.file//传过来的文件
      let url=URL.createObjectURL(file)//临时链接
      
      if(this.odd.filter(item=>item.id==id)[0]){
        //当存在临时文件时,重新赋值
        this.odd.filter(item=>item.id==id)[0].temUrl=url
        this.odd.filter(item=>item.id==id)[0].file=file
      }else{
        //当不存在时,新增一个临时文件对象
        this.$set(
          this.odd,
          this.odd.length,
          {id:id,file:file,temUrl:url}
        )
      }
      console.log('this.odd',this.odd)
    },
    

    总结

    这个故事告诉我不要在一条路上死磕

  • 相关阅读:
    新的一天,新的一周
    mysql重启失败,报错:starting mysql。 the server quit without updating pid file (/[failed]l/mysql/data/hostname.pid])
    rpm包安装、配置与卸载
    python高效运用(十)———文件(File)、输入输出的基本操作
    paramiko--------远程服务器连接工具
    main
    thread同步测试
    实验二测试
    《信息安全系统设计与实现》学习笔记9
    实验二 OpenSSL API使用
  • 原文地址:https://www.cnblogs.com/sanhuamao/p/13940735.html
Copyright © 2020-2023  润新知