如何用 :value 复制 v-models :value?

How do I replicate v-models :value with :value?

我在使用 @inputv-model 以及 @input:value 时得到了不同的行为。

v-model 与 :value 有什么不同,我只使用 :value 得不到?

我创建了一个 example at jsFiddle 来显示不同之处:顶部的输入字段只允许输入数字,而底部的输入字段允许输入所有内容。

我需要做什么才能仅使用 @input:value 获得相同的功能?

您可以通过向输入添加引用并通过它更新输入值来实现此目的。在这里检查。 https://jsfiddle.net/RiddhiParekh/nzfr0xy3/

模板 =>

    <div id="app">
  <div>
    <input @input="mask1" 
           v-model="message1" 
           type="text" 
           placeholder="Only numbers are allowed">
    <p>Message1 is: {{ message1 }}</p>
    <hr/>
    <input @input="mask2" 
           :value="message2"
           type="text"
           ref="myInput"
           placeholder="Try numbers">
    <p>Message2 is: {{ message2 }}</p>

  </div>
</div>

脚本=>

 new Vue({
  el: "#app",
  data: {
   message1: "",
   message2: ""
  },
  methods: {
    mask1(input){
        const validCharsForNumberFields = /[0-9]*(,|\.)?[0-9]*/gm
      this.message1 = input.target.value.match(validCharsForNumberFields)[0]
        },
    mask2(input){
      const validCharsForNumberFields = /[0-9]*(,|\.)?[0-9]*/gm
      console.log(input)
      this.$refs.myInput.value = input.target.value.match(validCharsForNumberFields)[0]
      this.message2 = this.$refs.myInput.value
    },

  }
})