【问题标题】:Select the same file on Vuetify component v-file-input在Vuetify组件v-file-input上选择同一个文件
【发布时间】:2021-09-24 20:53:16
【问题描述】:

我正在使用 nuxt、vuetify 2.x 和 typescript 构建一个 Web 应用程序。

我想使用 v-file-input 上传文件,但在选择同一个文件时遇到了一些问题。

例如,当我选择某个文件然后关闭对话框而不保存它时, 我无法选择相同的文件(即@change 没有触发)

我尝试过的:

<v-file-input 
  accept="image/png, image/jpeg" 
  ref="imageUploader"
  @click="resetImageUploader"
  placeholder="upload image"
  prepend-icon="mdi-camera"
  @change="changeImage"
></v-file-input>

脚本:

 methods: {
    resetForm() {
      (this.$refs.form as HTMLFormElement).reset();
    },
    resetImageUploader() {
      (this.$refs.imageUploader as any).reset();
    },
}

(对话框关闭时调用resetForm())

我尝试在点击输入表单时重置 imageuploader,但没有成功。

我尝试过(this.$refs.imageUploader as any).value = '' 而不是reset(),但没有成功。

顺便说一句,当我选择文件时,清除图标会像这样出现 如果我通过单击此图标清除表单,我可以选择相同的文件..

有人知道我该如何解决这个问题吗?

【问题讨论】:

    标签: vue.js frontend nuxt.js vuetify.js


    【解决方案1】:

    尝试像下面这样重置

    <v-file-input 
      accept="image/png, image/jpeg" 
      ref="imageUploader"
      :value="internalVal"
      @click="resetImageUploader"
      placeholder="upload image"
      prepend-icon="mdi-camera"
      @change="changeImage"
    ></v-file-input>
    

    脚本:

    methods: {
        resetImageUploader() {
          this.internalVal = []
        },
    }
    

    【讨论】:

    • 实际上,(this.$refs.imageUploader as any).value = '' 给出了错误Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders,这就是我使用reset() 的原因。您的建议给出了同样的错误,并且在文件读取Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob' 时给出了另一个错误
    • 在 js fiddle 或任何其他方式中分享您的代码
    • 并更新了应该可以解决您的问题的帖子
    猜你喜欢
    • 2020-01-06
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多