Vue3官网基础(四)事件处理(v-on、事件修饰符.passive.self.capture)、表单绑定输入 v-model(textarea、checkbox、radio、select、值绑定、修

本文详细介绍了Vue3中的事件处理,包括v-on、事件修饰符(如.prevent.self.capture)及其用法,以及表单输入绑定v-model的使用,如textarea、checkbox、radio、select等,同时讲解了值绑定和修饰符的应用,帮助开发者更好地理解Vue3的事件机制和表单交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue3官网基础(四)事件处理(v-on、事件修饰符.passive.self.capture)、表单绑定输入 v-model(textarea、checkbox、radio、select、值绑定、修饰符 )

总结:

  • 补充

    • Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
    • truthy(真值):在 JavaScript 中,truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false0""nullundefinedNaN 以外皆为真值)。括号内都是假值falsy。
    • .prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()
    • ==Event.preventDefault方法取消浏览器对当前事件的默认行为。==比如点击链接后,浏览器默认会跳转到另一个页面,使用这个方法以后,就不会跳转了;再比如,按一下空格键,页面向下滚动一段距离,使用这个方法以后也不会滚动了。该方法生效的前提是,事件对象的cancelable属性为true,如果为false,调用该方法没有任何效果。
  • 事件处理 v-on

    • 访问原始DOM事件

      • 可以用特殊变量 $event 把它传入方法

        <button @click="warn('Form cannot be submitted yet.', $event)">
          Submit
        </button>
        ---------------------------------------------------
        // ...
        methods: {
          warn(message, event) {
            // 现在可以访问到原生事件
            if (event) {
              event.preventDefault()
            }
            alert(message)
          }
        }
        
    • 事件修饰符

      • 类别
        • .stop :阻止事件
        • .prevent :取消浏览器对当前事件的默认行为
        • .capture使用事件捕获模式, 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理。.capture先执行父级的函数,再执行子级的触发函数(一般用法),
        • .selfself是只执行子级本身的函数,capture和self主要是函数执行顺序的问题。
        • .once :事件将只会触发一次
        • .passive默认行为将会立即触发,这个 .passive 修饰符尤其能够提升移动端的性能。
      • 注意
        • 使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。
        • 不要把 .passive.prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。
    • 系统修饰键

      • .meta

        • 在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。
      • ctrl

        • 只有在按住 ctrl 的情况下释放其它按键,才能触发 keyup.ctrl。而单单释放 ctrl 也不会触发事件。
      • .exact 修饰符

        • 允许你控制由精确的系统修饰符组合触发的事件

          <!-- 有且只有 Ctrl 被按下的时候才触发 -->
          <button @click.ctrl.exact="onCtrlClick">A</button>
          
          <!-- 没有任何系统修饰符被按下的时候才触发 -->
          <button @click.exact="onClick">A</button>
          
    • 为什么在 HTML 中监听事件?

      • 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
      • 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
      • 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。
  • 表单绑定输入 v-model

    • 基础用法
      • text (文本)和 textarea (多行文本)元素使用 value 属性 和 input 事件;
      • checkbox (复选框、圆角正方形)和 radio (单选框、圆形)使用 checked 属性 和 change 事件;
      • select (选择框)字段将 value 作为 prop 并将 change 作为事件。
  • 值绑定

    • v-model 绑定的值通常是静态字符串 (对于复选框也可以是布尔值)

    • 有时我们可能想把值绑定到当前活动实例的一个动态 property 上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串。

      <input type="radio" v-model="pick" v-bind:value="a" />
      -------------------------------------------------------
      // 当选中时
      vm.pick === vm.a
      
  • 修饰符

    • .lazy:在“change”时而非“input”时更新
    • .number:自动将用户的输入值转为数值类型
    • .trim:自动过滤用户输入的首尾空白字符

1. 事件处理

监听事件

我们可以使用 v-on 指令 (通常缩写为 @ 符号) 来监听 DOM 事件,并在触发事件时执行一些 JavaScript。用法为 v-on:click="methodName" 或使用快捷方式 @click="methodName"

例如:

<div id="basic-event">
  <button @click="counter += 1">Add 1</button>
  <p>The button above has been clicked {
  { counter }} times.</p>
</div>
Vue.createApp({
   
  data() {
   
    return {
   
      counter: 0
    }
  }
}).mount('#basic-event')

结果:

在这里插入图片描述

事件处理方法

然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称。

例如:

<div id="event-with-method">
  <!-- `greet` 是在下面定义的方法名 -->
  <button @click="greet">Greet</button>
</div>
Vue.createApp({
   
  data() {
   
    return {
   
      name: 'Vue.js'
    }
  },
  methods: {
   
    greet(event) {
   
      // `methods` 内部的 `this` 指向当前活动实例
      alert('Hello ' + this.name + '!')
      // `event` 是原生 DOM event
      if (event) {
   
        alert(event.target.tagName)
      }
    }
  }
}).mount('#event-with-method')

结果:

在这里插入图片描述

内联处理器中的方法

除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法:

<div id="inline-handler">
  <button @click="say('hi')">Say hi</button>
  <button @click=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChrisP3616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值