输入类型文件 vue.js 上的 v-model

bry*_*ode 3 javascript vue.js v-model

如何从输入 type="file" multiple 中的 v-model 数组获取数据?

<input type="file" multiple v-model="modFiles[index]">
<input type="file" multiple v-model="modFiles[index]">
<input type="file" multiple v-model="modFiles[index]">
Run Code Online (Sandbox Code Playgroud)

我正在使用 v-for 循环,我可以从每个 modFiles[] 获取第一个数据。

this.modFiles[0] //take the first from multiple file
Run Code Online (Sandbox Code Playgroud)

但这只是第一个数据。如何获取 modFiles[0],modFiles[1],modFiles[3] 内的所有数据?以及如何统计每个 modFiles 内的数据?

this.modFiles[0].length //i get error here
Run Code Online (Sandbox Code Playgroud)

非常感谢

akr*_*krn 5

不支持双向绑定<input type="file">,因为您不允许在此类输入上设置值(仅在用户选择文件后设置值)。

使用@change事件代替:

<input type="file" multiple @change="handleFileChange($event, index)">

methods: {
  handleFileChange(evt, index) {
    // evt.target.files contains Array-like FileList object
  }
}
Run Code Online (Sandbox Code Playgroud)

更新:

为了根据所选文件的数量显示/隐藏提交按钮,请引入新的数据属性:

data: {
  filesSelected: 0
},
methods: {
  handleFileChange(evt, index) {
    this.filesSelected = evt.target.files.length;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的模板中使用它:

<input type="submit" v-show="filesSelected > 0" />
Run Code Online (Sandbox Code Playgroud)