Отображение нескольких имен файлов Ошибка VueJS push не является функцией

#vue.js

Вопрос:

Я не хочу отображать имя нескольких файлов в своем шаблоне, я это делаю:

 lt;div v-for="(image, index) in imagesReturn" :key="index"gt;  lt;spangt;{{ image.name }}lt;/spangt;  lt;/divgt;  lt;divgt;  lt;generic-input  v-model="imagesReturn"  type="file"  multiple  @change="addFiles"  gt;  add files  lt;/generic-inputgt;  lt;/divgt;  lt;scriptgt; data() { return{  imagesReturn: [];  } } methods: {  addFiles(e) {  let selectedFiles = e.target.files;  for (let img of selectedFiles) {  this.imagesReturn.push(img.name);  }  } } lt;/scriptgt;  

Я хочу отобразить имя файлов в массиве imagesReturn, но у меня возникает ошибка, когда я нажимаю внутри массива ошибка this.imagesReturn.push не является функцией, я не знаю, почему, и я не могу отобразить имя файлов в своем шаблоне. Пожалуйста, спасибо вам.

Ответ №1:

Часть js кажется мне прекрасной. Я предполагаю, что проблема кроется в generic-input компоненте.

Как правило, когда something.push is not a function произошла ошибка, это всегда означает something , что это не массив.

Поскольку imagesReturn используется двусторонняя привязка v-model , возможно, что generic-input компонент изменяется imagesReturn с [] на '' (пустая строка) или null после монтирования.

Поэтому я предлагаю вам console.log(this.imagesReturn) зайти внутрь addFiles() , чтобы посмотреть, когда изменится значение (или watch imagesReturn ).

Я не знаю generic-input , принадлежит ли компонент к структуре пользовательского интерфейса или создан вами самими. Если вы принадлежите к структуре пользовательского интерфейса, вам необходимо внимательно прочитать документацию о @change="function(params)" событии, особенно его параметры. Если он написан самостоятельно, вам нужно проверить, какое значение он передаст в компоненте, когда emit('change', value) .

Комментарии:

1. спасибо @gengar.значение-это мой общий компонент-введите проблему, которую я решаю