510 v-on:基础,参数,修饰符

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>

  <div id="app">
    <h2>{{counter}}</h2>
    <!--<h2 v-bind:title></h2>-->
    <!--<h2 :title></h2>-->
    <!--<button v-on:click="counter++">+</button>-->
    <!--<button v-on:click="counter&#45;&#45;">-</button>-->
    <!--<button v-on:click="increment">+</button>-->
    <!--<button v-on:click="decrement">-</button>-->
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        counter: 0
      },
      methods: {
        increment() {
          this.counter++
        },
        decrement() {
          this.counter--
        }
      }
    })
  </script>

</body>

</html>

v-on参数

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>

  <div id="app">
    <!--1.事件调用的方法没有参数-->
    <button @click="btn1Click()">按钮1</button>
    <button @click="btn1Click">按钮1</button>

    <!--2.在事件定义时, 写方法时省略了小括号, 但是方法本身是需要一个参数的, 这个时候, Vue会默认将浏览器生产的event事件对象作为参数传入到方法-->
    <!--<button @click="btn2Click(123)">按钮2</button>-->
    <!--<button @click="btn2Click()">按钮2</button>-->
    <button @click="btn2Click">按钮2</button>

    <!--3.方法定义时, 我们需要event对象, 同时又需要其他参数-->
    <!-- 在调用方式, 如何手动的获取到浏览器参数的event对象: $event-->
    <button @click="btn3Click(abc, $event)">按钮3</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        message: '你好啊',
        abc: 123
      },
      methods: {
        btn1Click() {
          console.log("btn1Click"); // btn1Click
        },
        // 和原生js一样,调用函数时,不传实参,则第一个形参是事件对象;传了实参,值就是实参
        btn2Click(event) {
          console.log('--------', event);
        },
        btn3Click(abc, event) {
          console.log('++++++++', abc, event); // 123  事件对象
        }
      }
    })

  // 如果函数需要参数,但是没有传入, 那么函数的形参为undefined
  // function abc(name) {
  //   console.log(name);
  // }
  //
  // abc()
  </script>

</body>

</html>

v-on修饰符

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
  <!--1. .stop修饰符的使用-->
  <div @click="divClick">
    aaaaaaa
    <button @click.stop="btnClick">按钮</button>
  </div>

  <!--2. .prevent修饰符的使用-->
  <br>
  <form action="baidu">
    <input type="submit" value="提交" @click.prevent="submitClick">
  </form>

  <!--3. .监听某个键盘的键帽 【常用于输入框】-->
  <input type="text" @keyup.enter="keyUp">

  <!--4. .once修饰符的使用-->
  <button @click.once="btn2Click">按钮2</button>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊'
    },
    methods: {
      btnClick() {
        console.log("btnClick");
      },
      divClick() {
        console.log("divClick");
      },
      submitClick() {
        console.log('submitClick');
      },
      keyUp() {
        console.log('keyUp');
      },
      btn2Click() {
        console.log('btn2Click');
      }
    }
  })
</script>

</body>
</html>

原文地址:https://www.cnblogs.com/jianjie/p/13527224.html