菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue 教程

Vue 首页 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue Why, How and Setup Vue First SFC Page Vue Components Vue Props Vue v-for Components Vue $emit() Vue Fallthrough Attributes Vue Scoped Styling Vue Local Components Vue Slots Vue v-slot Vue Scoped Slots Vue Dynamic Components Vue Teleport Vue HTTP Request Vue Template Refs Vue Lifecycle Hooks Vue Provide/Inject Vue Routing Vue Form Inputs Vue Animations Vue Animations with v-for Vue Build Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue 'watch' 选项


示例

watch 选项中使用监视器,以使带有 <input type="range"> 的值无法选择 20 到 70 之间的值。

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 选项是一个对象,包含在 Vue 实例上声明的所有监视器。

监视器是一个与数据属性或计算属性同名的函数。当具有相同名称的属性发生更改时,将自动调用该监视器。

当调用监视器时,新值和旧值都可以作为参数传递给监视器函数。

监视器也可以是一个点分隔的路径,例如 tiger.weight,这样只有当 tiger 对象中的 weight 属性更改时,才会调用监视器。

注意:声明监视器时应避免使用箭头函数,因为通过 this 关键字无法从 such function 内部访问 Vue 实例。

当使用对象语法编写监视器时(参见下面的示例),可以使用以下选项:

选项 描述
handler 这里编写 watch 函数。
'method name' 可以通过提供方法名作为字符串来设置一个监视器,以便调用一个方法。
deep 默认值为 'false'。如果监视器是深度监视的,它还会响应监视器设置的属性中更深层级的更改。
immediate 默认值为 'false'。在监视器创建后立即触发。当 'immediate' 设置为 'true' 时,第一次触发监视器时,旧值将是 'undefined'。
flush 默认值为 'pre'。指定在组件渲染时相对于何时运行回调函数。可能的值为 'pre'、'post' 和 'sync'。请谨慎使用此 flush 选项。
onTrigger/onTrack 用于调试。仅在开发模式下有效。

注意:也可以使用 $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 Watchers

Vue 教程:Vue v-model 指令

Vue 参考:Vue $watch() 方法


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持