Vue Javascript forEach цикл внутри метода

#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, но этот выглядит более чистым для меня.