如何从 JS 更改 v-model 值

gre*_*rep 8 javascript vue.js vue-component vuejs2

我正在使用 Google 自动完成地址表单。我在谷歌官方网页上找到了示例。一切安好。一切正常!但它是原生 Javascript,

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

 document.getElementById(addressType).value = val;
Run Code Online (Sandbox Code Playgroud)

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

 document.getElementById('street_number').value
Run Code Online (Sandbox Code Playgroud)

我想有类似的东西:

 <input type="text" v-model="input.address" ref="addressRef">
Run Code Online (Sandbox Code Playgroud)

并读取值:

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

            };
        },
        methods: {
            test() {
                console.log(this.input.address);
                console.log(this.$refs.addressRef);
        }
       }
Run Code Online (Sandbox Code Playgroud)

所以问题是:

  • 如何从 JS 代码设置值以更新绑定值?现在值为空,因为我使用 "getElementById("id").value = val"

Ork*_*nov 11

之后您可以发出依赖于更新其的input事件:v-modelvalue

let el = document.getElementById("id");
el.value = val;
el.dispatchEvent(new Event('input'));
Run Code Online (Sandbox Code Playgroud)

在行动:

let el = document.getElementById("id");
el.value = val;
el.dispatchEvent(new Event('input'));
Run Code Online (Sandbox Code Playgroud)
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'));
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • @grep `new Event(addressType)` 应该是 `new Event('input')` (2认同)