vue实现change事件
Vue 实现 change 事件的方法
在 Vue 中,可以通过多种方式监听和处理 change 事件,以下是常见的实现方法:
使用 v-on 或 @ 语法监听 change 事件
<template>
<input type="text" @change="handleChange" />
</template>
<script>
export default {
methods: {
handleChange(event) {
console.log('值变化了:', event.target.value);
}
}
}
</script>
结合 v-model 和 watch 监听变化

<template>
<input type="text" v-model="inputValue" />
</template>
<script>
export default {
data() {
return {
inputValue: ''
}
},
watch: {
inputValue(newVal, oldVal) {
console.log('值从', oldVal, '变为', newVal);
}
}
}
</script>
自定义组件中触发 change 事件
在自定义组件中,可以通过 $emit 触发 change 事件:

<template>
<input
type="text"
:value="value"
@input="$emit('input', $event.target.value)"
@change="$emit('change', $event.target.value)"
/>
</template>
<script>
export default {
props: ['value']
}
</script>
使用 .lazy 修饰符延迟 change 触发
对于 v-model,默认在 input 事件触发更新,使用 .lazy 可以改为在 change 事件触发:
<template>
<input type="text" v-model.lazy="lazyValue" />
</template>
<script>
export default {
data() {
return {
lazyValue: ''
}
},
watch: {
lazyValue(newVal) {
console.log('延迟变化:', newVal);
}
}
}
</script>
针对 select 元素的 change 事件
<template>
<select v-model="selectedOption" @change="handleSelectChange">
<option value="1">选项1</option>
<option value="2">选项2</option>
</select>
</template>
<script>
export default {
data() {
return {
selectedOption: ''
}
},
methods: {
handleSelectChange(event) {
console.log('选择变化:', this.selectedOption);
}
}
}
</script>
这些方法可以根据具体需求选择使用,v-on:change 直接监听原生 change 事件,而 v-model + watch 或 .lazy 修饰符提供了更灵活的响应方式。






