【Vue】 関数で生成したhtml内のv-on:clickが機能しない
Vue.js初心者です。
以下のコードは、新規追加ボタンでテキストエリアと削除ボタンを生成するプログラムなのですが、<button v-on:click='add'>をクリックしてaddメソッドを実行したときに生成されるhtmlの、削除ボタンのv-on:click='del'が機能しません。(削除ボタンを押しても何の反応もありません。)
デベロッパツールで見ても、<button v-on:click="del">とそのまま出力されてしまっています。
調べても原因がわからず困っています。
created:の中でも this.add()を実行しているのですが、この場合は、生成されたhtmlのv-on:delが正常に機能しています。(削除ボタンで、その親のsectionが削除されます。)同じメソッドを実行しているはずなのに、何が違うのでしょうか?
宜しくお願い致します。
該当のソースコード
HTML
1 2<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script><!-- Vue.jsの読み込み --> 3 4<body> 5 <div id='app'> 6 <div id='makearea'> 7 </div> 8 <button v-on:click='add'>新しいメモ</button> <!-- ※このaddメソッド実行で生成された削除ボタンが効かない --> 9 </div> 10</body> 11 12 13<script> 14 15new Vue({ 16 el: '#app', 17 18 methods: { 19 20 add: function(){ // メモ追加 21 22 var section = document.createElement('section') // メモ1つあたりのブロック 23 24 var textbox = document.createElement('textarea') // 入力欄 25 26 var trash = document.createElement('button') // 削除ボタン 27 trash.innerHTML = '削除' 28 trash.setAttribute('v-on:click', 'del') // 削除の為のディレクティブ 29 30 var makearea = document.getElementById('makearea') // メモ作成エリア 31 makearea.appendChild(section) // セクション生成 32 section.appendChild(textbox) // 入力欄生成 33 section.appendChild(trash) // 削除ボタン生成 34 35 }, 36 37 del: function(e){ // メモ削除 38 39 var trash = e.target 40 var section = trash.parentElement 41 var app = section.parentElement 42 app.removeChild(section) 43 44 } 45 46 }, 47 48 created: function(){ // インスタンス生成時 49 50 this.add() // 早速メモを1つ作成 // ※このaddメソッド実行で生成された削除ボタンは機能する 51 52 } 53 54}) 55 56</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/10 17:39