nullptr-0 2022-05-24 18:09 采纳率: 0%
浏览 17
已结题

如何使编辑框的内容可以修改?

我想实现的界面,其中的编辑框设定了初始值,用户点击编辑框可以修改里面的内容,但我发现按我现在的代码,编辑框的内容不能修改,不知道为什么,求修改的代码。原始代码如下


<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column label="封面">
      <template slot-scope="scope">
        <el-upload :auto-upload="false" :show-file-list="false" :on-change="(res)=>{ changeCover(res,scope.row) }" action="" drag>
          <img :src="scope.row.picture" style="width: 100px; height: 100px">
            <div slot="error" class="image-slot el-image__error">暂无封面</div>
          </img>
        </el-upload>
      </template>
    </el-table-column>
    <el-table-column label="歌曲">
      <template #default="scope">
        <el-input placeholder="请输入歌曲标题" v-model="iTitle ? iTitle : iTitle = scope.row.title, iTitle" @change="(value)=>{ changeTitle(value, scope.row) }" clearable></el-input>
      </template>
    </el-table-column>
    <el-table-column label="歌手">
      <template #default="scope">
        <el-input placeholder="请输入歌手" v-model="iArtist ? iArtist : iArtist = scope.row.artist, iArtist" @change="(value)=>{ changeArtist(value, scope.row) }" clearable></el-input>
      </template>
    </el-table-column>
    <el-table-column label="专辑">
      <template #default="scope">
        <el-input placeholder="请输入专辑名称" v-model="iAlbum ? iAlbum : iAlbum = scope.row.album, iAlbum" @change="(value)=>{ changeAlbum(value, scope.row) }" clearable></el-input>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template #default="scope">
        <el-button circle icon="el-icon-video-play" type="success" @click="handlePlay(scope.$index, scope.row)">
        </el-button>
        <el-button circle icon="el-icon-download" @click="handleDownload(scope.row)"></el-button>
        <el-button circle icon="el-icon-delete" type="danger" @click="handleDelete(scope.$index, scope.row)">
        </el-button>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
import { RemoveBlobMusic } from '@/utils/utils';
import {
  GetArrayBuffer,
  GetImageFromURL,
  WriteMetaToFlac,
  WriteMetaToMp3,
} from '@/decrypt/utils';
import { parseBlob as metaParseBlob } from 'music-metadata-browser';

export default {
  name: 'PreviewTable',
  props: {
    tableData: { type: Array, required: true },
    policy: { type: Number, required: true },
  },

  methods: {
    handlePlay(index, row) {
      this.$emit('play', row.file);
    },
    handleDelete(index, row) {
      RemoveBlobMusic(row);
      this.tableData.splice(index, 1);
    },
    handleDownload(row) {
      this.$emit('download', row);
    },
    async regenerate(row) {
      const fileBuffer = await GetArrayBuffer(row.blob)
      const musicMeta = await metaParseBlob(row.blob);
      const imageInfo = await GetImageFromURL(row.picture);
      try {
        const newMeta = { picture: imageInfo.buffer, title: row.title, artists: row.artist?.split(' _ ') };
        if (ext === 'mp3') {
          fileBuffer = WriteMetaToMp3(Buffer.from(fileBuffer), newMeta, musicMeta);
          row.blob = new Blob([fileBuffer], { type: row.mime });
        } else if (ext === 'flac') {
          fileBuffer = WriteMetaToFlac(Buffer.from(fileBuffer), newMeta, musicMeta);
          row.blob = new Blob([fileBuffer], { type: row.mime });
        } else {
          console.info('writing metadata for ' + row.ext + ' is not being supported for now');
        }
      } catch (e) {
        console.warn('Error while appending cover image to file ' + e);
      }
      row.file = URL.createObjectURL(row.blob);
    },
    async changeCover(file, row) {
      if (row.picture?.startsWith('blob:')) {
        URL.revokeObjectURL(row.picture);
      }
      row.picture = file.url;
      URL.revokeObjectURL(row.file);
      await regenerate(row);
    },
    async changeTitle(value, row) {
      row.title = value;
      URL.revokeObjectURL(row.file);
      await regenerate(row);
    },
    async changeArtist(value, row) {
      row.artist = value
      URL.revokeObjectURL(row.file);
      await regenerate(row);
    },
    async changeAlbum(value, row) {
      row.album = value
      URL.revokeObjectURL(row.file);
      await regenerate(row);
    },
  },
};
</script>

<style scoped></style>
  • 写回答

2条回答 默认 最新

  • 瘦子先生 2022-05-24 18:29
    关注
      <el-table class="mt20" size="small" :data="tableData" border v-loading="listLoading" highlight-current-row>
        <el-table-column align="center" prop="name" label="名称">
        </el-table-column>
        <el-table-column align="center" prop="value" label="值">
        </el-table-column>
    
      </el-table>
    

    prop 就是中的值就是初时的值 tableData 初时数据

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月11日
  • 创建了问题 5月24日

悬赏问题

  • ¥100 ICEM3-4度尖角位置能不能将质量提升到0.2甚至更高
  • ¥15 在网页上点击view PDF或者open PDF之类的选项加载很慢甚至加载不出来,换网或浏览器都不行
  • ¥115 不能成功安装R语言pathview包
  • ¥15 LEfSe在线分析Galaxy报错,如何解决?
  • ¥15 GTEx数据库eqtl数据整理求教学
  • ¥20 AI自瞄 KMBOXNET
  • ¥15 初学者,自己写的js俄罗斯代码,谁能帮我调试并找出问题所在!! 自己调试了好多遍!快乱了,崩溃了!
  • ¥15 IEC61850库中IedServer_setControlHandler函数的作用
  • ¥15 qt 编译webengine 支持 webgl
  • ¥15 Cadence安装后pcb design可以打开,Capture CIS闪退