アップロードする画像の高さと幅を取得し、その配列を作りたいと思っています。
vue
1<template> 2 <input type="file" ref="preview" @change="getWidthAndHeight" accept="image/*" multiple> 3</template> 4 5export default { 6 data() { 7 return { 8 widthAndHeightArray: []; 9 } 10 } 11 methods: { 12 getWidthAndHeight() { 13 const files = this.$refs.preview.files; 14 for (let i = 0; i < files.length; i++) { 15 let image = new Image(); 16 image.src = URL.createObjectURL(files[i]); 17 image.addEventListener('load', function() { 18 const widthAndHeight = { 19 width: image.naturalWidth, 20 height: image.naturalHeight, 21 }; 22 this.widthAndHeightArray.push(widthAndHeight); 23 }); 24 } 25 } 26 } 27}
上のようなコードを書いたのですが(重要な部分以外は省略しています)、
this.widthAndHeightArray.push(widthAndHeight);
の部分で「Cannot read property 'push' of undefined」のエラーがでます。
つまり、widthAndHeightArrayが未定義ですよということです。
widthAndHeightArrayはグローバルな変数のはずですが、addEventListenerの中では使えないという仕様なのでしょうか?
どうすればwidthAndHeightArrayにwidthAndHeightをpushすることができるのでしょうか?
試したこと
ダメもとですがaddEventListenerの代わりにonloadを使ってみましたが同じくダメでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 05:39
2021/03/17 08:03