zoukankan      html  css  js  c++  java
  • 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)
    },
    

    总结

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

  • 相关阅读:
    js-事件委托
    compass的使用
    Ruby与sass 与compass安装
    JavaScript对象属性 constructor
    JQuery中常用的 属性选择器
    css3新增的背景属性
    js操作符
    Python04---重要函数
    Python03---内置模块
    Python02---整数,字符串,元组,列表,集合,字典
  • 原文地址:https://www.cnblogs.com/sanhuamao/p/13940735.html
Copyright © 2011-2022 走看看