以下のような状況で、
HTML
1<div id="XXX"> 2 <input id="AAA" v-model="aaa"> 3</div> 4 5<script> 6var vm = new Vue({ 7 el: "#XXX", 8 data: { 9 aaa: '' 10 } 11}) 12</script>
input に手入力したときは vm.$data.aaa に反映されます。
vm.$data.aaa に値を代入すれば input の値が変わります。
ここまではVueの基本的なことで問題ないです。
ここでVue管理外で document.getElementById('AAA').value = '123'; などの変更がされると、
見た目にはinputの値は123になり、vm.$data.aaa の値は前の値のまま変わりません。
input の値を vm.$data.aaa に反映するにはどうするのがよいでしょうか。
input要素でinputイベントを発火すれば、Vueは紐づいているデータに値を反映してくれたのですが、これでよいのか自信がないです。
JavaScript
1document.getElementById('AAA').value = 'Vue管理外でvalueを書き換える'; 2 3var e = document.createEvent('HTMLEvents'); 4e.initEvent('input', false, true); 5document.getElementById('AAA').dispatchEvent(e); 6//ここまでやれば vm.$data.aaa が書き換わった
これはありでしょうか。もっと良い方法があるでしょうか。
Vueの管理外でDOMが変更されるのをなくすのが一番良いと思いますが、
VueなしからスタートしたプログラムでjQueryが横からDOMを変えてくる部分があって、
とりあえず今は何とかうまく共存できないかなと考えているところです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/05 16:33