在里面使用观察者watch
选项使得无法选择 20 到 70 之间的值<input type="range">
。
export default {
data() {
return {
rangeVal: 4
};
},
watch: {
rangeVal(val) {
if( val>20 && val<70) {
if(val<40){
this.rangeVal = 20;
}
else {
this.rangeVal = 70;
}
}
}
}
};
运行示例 »
这个watch
option 是一个对象,其中包含在 Vue 实例上声明的所有观察者。
观察器是一个与数据属性或计算属性同名的函数。每当同名的属性发生更改时,都会自动调用观察程序。
当调用观察程序时,新值和以前的值可作为观察程序函数的参数。
观察者也可以是点分隔的路径,例如tiger.weight
,这样只有当weight
的属性tiger
对象改变了。
笔记:声明观察者时应避免箭头函数,因为无法使用以下函数从此类函数内部访问 Vue 实例this
关键字。
使用对象语法编写观察程序时(请参见下面的示例),可以使用以下选项:
Option | Description |
---|---|
handler | This is where the watch function is written. |
'method name' | A watcher can be set up to call a method by providing the method name as a string. |
deep | Default value is 'false'. If the watcher is deep, it also reacts to changes further down in the property the watcher is set up to watch. |
immediate | Default value is 'false'. Triggers the watcher immediately after it is created. The old value will be 'undefined' the first time the watcher is triggered when 'immediate' is set to 'true'. |
flush | Default value is 'pre'. Specify when to run the callback function relative to when the component is rendered. Possible values are 'pre', 'post' and 'sync'. Use this flush option with caution. |
onTrigger/onTrack | Used for debugging. Only works in development mode. |
笔记:观察者也可以使用创建$watch()
方法。
使用带有对象语法的观察者。
<template>
<h2>Example watch Option</h2>
<p>The 'rangeVal' watcher is written with the object syntax, with immediate: true, so that rangeVal is moved to '70' when the page first loads:</p>
<input type="range" v-model="rangeVal">
<p>rangeVal: <span>{{ rangeVal }}</span></p>
</template>
<script>
export default {
data() {
return {
rangeVal: 40
};
},
watch: {
rangeVal: {
handler(val) {
if (val > 20 && val < 70) {
if (val < 40) {
this.rangeVal = 20;
}
else {
this.rangeVal = 70;
}
}
},
immediate: true
}
}
};
</script>
<style>
span {
padding: 3px;
font-weight: bold;
font-family: 'Courier New', Courier, monospace;
background-color: lightgreen;
}
</style>
运行示例 »
Vue教程:Vue 观察者
Vue教程:Vue v-model 指令
Vue参考:Vue $watch() 方法
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!