laravelで画像の複数枚投稿を実装しています。
解決したいこと: 新しく作るhtml要素に@changeもしくはv-onをつける。
現状: html要素として表示されてしまう。発火しない。
現在は写真を追加した際に新しいinput要素を作るようにしています。
そのイベントの発火でvue.jsの@changeを使用しています。
しかし、新しく追加するinput要素に@change をうまく付与することが出来ません。
削除の部分も同様です。
<div class="form-group" id="image"> <label for="photo">写真</label> <input type="file" name="src" @change='onFile'> </div> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script> <script> new Vue({ el: '#image', data: { photos: [], fileIndex: [1,2,3] }, methods: { buildinput(index) { let html = `<div data-index="${index}" class="js-file_group"> <input type="file" name="src[${index}]" @change='onFile'> <div class="js-remove" @change='delete_image'>削除</div> </div>` return html; }, onFile(e) { this.photos = e.target.files $('#image').append(this.buildinput(this.fileIndex[0])) }, delete_image(){ console.log('テスト') } } }) </script>
書き方の問題な気がするのですが、正しい記述方法が見つけられませんでした。
どなたか知恵を貸していただけないでしょうか?
よろしくお願いします。
laravel6.18
vue 2.6.11
回答2件
あなたの回答
tips
プレビュー