【问题标题】:How to change v-model value from JS如何从 JS 更改 v-model 值
【发布时间】:2019-10-14 08:30:24
【问题描述】:

我正在使用 Google 自动填充地址表单。我在谷歌官方网页上找到了example。一切顺利。一切正常!但它是原生 Javascript,

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

 document.getElementById(addressType).value = val;

问题是我应该使用 "document" 来更改值:

 document.getElementById('street_number').value

我想要类似 tat 的东西:

 <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 代码中设置值来更新绑定值?现在值 为 null,因为我使用 "getElementById("id").value = val"

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component


    【解决方案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>

    【讨论】:

    • 看起来它在 my example 中不起作用,你能帮帮我吗?
    • @grep new Event(addressType) 应该是 new Event('input')
    猜你喜欢
    • 2017-09-09
    • 2018-08-05
    • 1970-01-01
    • 2020-11-24
    • 2021-06-27
    • 1970-01-01
    • 2018-08-24
    • 2021-11-12
    • 2016-01-20
    相关资源
    最近更新 更多