innerHTMLでHTML要素を書き換えた時に、vueとバインドしている部分(v-model)が描画できません。
html
1<body> 2 <div id="app"> 3 <div> 4 <input v-model="colors[0].name"> 5 </div> 6 </div> 7 8<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 9<script> 10 11new Vue({ 12 el: '#app', 13 data: { 14 colors: [{name:"red"},{name:"green"},{name:"blue"}] 15 }, 16}) 17</script> 18</body> 19``` 20 21これだと、問題なくテキストエリア部分には"red"と書かれます。 22 23この3〜5行目をinnerHTMLを使って書き換えようと思い、以下のコードを書きましたが、 24v-modelがうまく働いていないのか、テキストエリア内は空欄のままです。 25 26``````html 27<body> 28 <div id="app"> 29- <div> 30- <input v-model="colors[0].name"> 31- </div> 32+ <div id="insert_el"> 33+ ここが置き換わる 34+ </div> 35 36+ <button onclick="insertHtml()">置き換え</button> 37 </div> 38 39<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 40<script> 41 42+function insertHtml(){ 43+ const target=document.getElementById("insert_el") 44+ target.innerHTML='<input v-model="colors[0].name">' //ここがうまく行っていない部分 45+} 46 47new Vue({ 48 el: '#app', 49 data: { 50 colors: [{name:"red"},{name:"green"},{name:"blue"}] 51 }, 52}) 53</script> 54</body>
HTMLを書き換えた時に、vueのディレクティブを反映させる方法はあるのでしょうか。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/23 12:11