#javascript #vue.js
#javascript #vue.js
Вопрос:
я пытаюсь добавить несколько изображений и не могу найти способ заставить его работать.
У меня есть этот метод:
imageAdd(e) {
e.forEach(function(e) {
if (e.type == 'image/jpeg' || e.type == 'image/png')
{
this.images.push({
image: URL.createObjectURL(e),
imageData: e
})
}
})
},
Когда я пытаюсь перейти к массиву изображений, это выдает мне эту ошибку Cannot read property 'images' of undefined
, хотя она определена внутри моих данных. В чем здесь проблема?
Комментарии:
1.
.forEach(/*...*/, this)
или.forEach(/*...*/.bind(this)
или связанный.2. @ASDFGerte или функция со стрелкой, я думаю.
3. True или используйте
for ... of
вместо.forEach
, что в любом случае часто лучше
Ответ №1:
Используйте функцию стрелки вместо обычной, которая имеет свою собственную this
:
imageAdd(e) {
e.forEach((e) => {
if (e.type == 'image/jpeg' || e.type == 'image/png')
{
this.images.push({
image: URL.createObjectURL(e),
imageData: e
})
}
})
}
Комментарии:
1. Да, заставил его работать как шарм. Я использовал оператор for, но этот выглядит более чистым для меня.