vue中v-on:(@)事件监听

本文介绍如何使用Vue.js创建一个简单的计数器应用,涉及事件监听、按钮操作和事件冒泡、阻止与阻止默认行为。通过实例演示了Vue的increment、decrement方法,以及.click修饰符的使用。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <h2>{{counter}}</h2>
    <button @click="increment()">+</button>
    <button @click="decrement()">-</button>
    <button @click="bt3Click(abc,$event)">按钮3</button>
    <!-- .stop修饰符的使用:阻止冒泡事件 -->
    <div @click="divClick">
      aaaaaaa
      <button @click.stop="btnClick">div事件冒泡</button>
    </div>
    <!-- .prevent修饰符的使用:正常打印并阻止提交事件 -->
    <form action="baidu">
      <input type="submit" value="提交" @click.prevent="submitClick">
    </form>
    <!-- 监听键盘的键帽:监听输入事件,.enter监听点击回车事件-->
    <input type="text" @keyup.enter ="keyUp">
    <!-- .once的使用:只点击一次触发事件-->
    <button @click.once="onceClick">onceClick</button>


  </div>
  <script src="../js/vue.js"></script>
  <script>
  const app = new Vue({
    el:'#app',
    data:{
      counter:0,
      abc:'why'
    },
    methods:{
      increment(){
        this.counter++;
      },
      decrement(){
        this.counter--;
      },
      bt3Click(abc,event){ //$event传入监听事件
        console.log('++++++',abc,event);
      },
      divClick(){
        console.log("divClick");
      },
      btnClick(){
        console.log("btnClick");
      },
      submitClick(){
        console.log("submitClick");
      },
      keyUp(){
        console.log("keyUp");
      },
      onceClick(){
        console.log("onceClick");
      }
    }
  })
  </script>
</body>
</html>

Vue.js中,`v-on:click`、`@` 和 `:` 都是重要的指令和语法糖,用于处理事件和绑定属性。 ### v-on:click `v-on` 是Vue.js中用于监听DOM事件的指令,当监听点击事件时,可使用 `v-on:click`。其事件处理器的值有两种形式: - **内联事件处理器**:事件被触发时执行的内联JavaScript语句,与 `onclick` 相似。例如 `v-on:click="item+=1"`,点击时 `item` 的值会加1 [^1][^2]。 - **方法事件处理器**:一个指向组件定义的方法的属性名或是路径。当事件处理逻辑比较复杂时,一般使用这种方式。示例如下: ```html <a href="javascript:void(0);" :class="{'link-click':isClick}" v-on:click="add">add</a> <p>这是第{{ num }}点击</p> <script> var vm = new Vue({ el:'#app', data: { isClick: true, num: 0 }, methods: { // event 是原生DOM事件,将 event 作为参数,可获取 event.target 等属性,event 可加可不加 add: function(event) { this.num = this.num + 1 if (event) { console.log(event.target.tagName) // 输出 A } } } }) </script> ``` 在上述代码中,点击 `add` 链接时会调用 `add` 方法,更新 `num` 的值 [^1][^3]。 ### @ `@` 是 `v-on` 的简写形式。使用 `@` 可以让代码更加简洁。例如 `@click="hander"` 与 `v-on:click="hander"` 是等价的,都用于监听点击事件并执行对应的 `hander` 方法 [^1]。 ### : `:` 是 `v-bind` 的简写形式,用于动态绑定一个或多个属性,或者向子组件传递props。例如 `:class="{'link-click':isClick}"` 表示根据 `isClick` 的值动态绑定 `link-click` 类名。它与 `v-bind:class="{'link-click':isClick}"` 是等价的。不过,它并非直接用于事件处理,而是用于属性绑定 [^3]。 ### $event 在事件处理中的使用 在监听原生DOM事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 `$event` 属性,如 `v-on:click="handle('ok', $event)"` [^4]。 综上所述,`v-on:click` 和 `@` 主要用于事件监听和处理,而 `:` 用于属性绑定。它们共同构成了Vue.js中灵活的事件和属性处理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值