如何在Vue.js中调整文本字段反应性

时间:2019-02-15 08:34:05

标签: javascript vuejs2 vue-reactivity

我在Vue.js中有一个简单的文本字段:

new Vue({
  el: '#app',
  data: {
    value: 'Test'
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <input type="text" v-model="value" ref="input" />
  <p>{{ value }}</p>
</div>

是否可以将数据模型中值的更新频率从“ onChange”降低到“ onBlur”?

2 个答案:

答案 0 :(得分:3)

v-model只是=>

的语法糖

:value =“ modelValue” @ input =“ modelValue = $ event.target.value”

如果您还想要其他东西,那很容易做到。只需将更新侧更改为onBlur,所以=>

<input  class="form-control
    :value="value" 
    @blur="value = $event.target.value"
    @input="value = $event.target.value"
>

改进的示例代码:

new Vue({
  el: '#app',
  data: {
    value: 'Test'
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <input
    type="text"
    :value="value"
    @blur="value = $event.target.value"
    ref="input"
    />
  <p>{{ value }}</p>
</div>

答案 1 :(得分:1)

是的,您应该只添加@blur事件,并将事件的值传递给它

然后,当在methods中触发此事件时,它将把result的值更改为输入值...因此,更新仅取决于输入的blur < / p>

new Vue({
  el: '#app',
  data: {
    result: '',
    value:''
  },
  methods:{
  	blo(e){
    	this.result = e
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div id="app">
  <input type="text" @blur='blo(value)' v-model="value" />
  <p>{{ result }}</p>
</div>
</div>