如何从JS更改V模型值

时间:2019-05-28 18:57:14

标签: javascript vue.js vuejs2 vue-component

我正在使用Google自动填充地址表格。我在Google官方网页上找到了example。一切都好。一切正常!但这是本机Javascript,

我有Vue应用程序,我不喜欢如何从JS脚本更改文本输入值。 这个想法是,当我在主输入中更改某些内容时,JS事件监听器应更改其他输入的值:

 document.getElementById(addressType).value = val;

问题是我应该使用“文档” 来更改值:

 document.getElementById('street_number').value

我想拥有像达人这样的东西:

 <input type="text" v-model="input.address" ref="addressRef">

并读取值:

export default {
        data() {
            return {
                input: {
                    address: "",
                    ...
                }

            };
        },
        methods: {
            test() {
                console.log(this.input.address);
                console.log(this.$refs.addressRef);
        }
       }

所以问题是:

  • 如何通过JS代码设置值以更新绑定值?现在值为空,因为我使用了“ getElementById(” id“)。value = val”

1 个答案:

答案 0 :(得分:1)

之后,您可以发出input事件,v-model依赖此事件来更新其value

let el = document.getElementById("id");
el.value = val;
el.dispatchEvent(new Event('input'));

实际中:

Vue.config.devtools = false

const app = new Vue({
  el: '#app',
  
  data: {
    message: null
  },
  
  methods: {
    updateBinding() {
      let el = document.getElementById("input");
      el.value = 'Hello!';    
      el.dispatchEvent(new Event('input'));
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <button @click="updateBinding">Click me </button><br>
  <input id="input" v-model="message" placeholder="edit me">
  <p>Message is: {{ message }}</p>
</div>