zoukankan      html  css  js  c++  java
  • v-on以及v-show、v-if的一些小杂碎

    v-on的参数问题:

    当通过methods中定义方法,以供@click调用时,需要注意参数问题:

    情况一:如果该方法不需要额外参数,那么方法后的()可以不添加。但是注意:如果方法本身中有一个参数,那么会默认将原生事件event参数传递进去。

    情况二:如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。

    <!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");
          },
          btn2Click(event) {
            console.log('--------', event);
          },
          btn3Click(abc, event) {
            console.log('++++++++', abc, event);
          }
        }
      })
    
      // 如果函数需要参数,但是没有传入, 那么函数的形参为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>

     v-show与v-if的区别:

    v-if和v-show都可以决定一个元素是否渲染,那么开发中我们如何选择呢?

    v-if当条件为false时,压根不会有对应的元素在DOM中。 v-show当条件为false时,仅仅是将元素的display属性设置为none而已。 开发中如何选择呢? 当需要在显示与隐藏之间切片很频繁时,使用v-show。 当只有一次切换时,使用v-if。

  • 相关阅读:
    2955 ACM 杭电 抢银行 01背包 乘法
    杭店 ACM 1864 最大报销额 01背包
    【ACM】 1231 最大连续子序列
    如何保证消息队列的幂等性
    Kafka如何保证消息的高可用
    消息队列的优点和缺点
    架构学习和经验积累的方法
    如何撰写总体设计与详细设计文档
    如何做合格的面试官
    如何设计好的接口
  • 原文地址:https://www.cnblogs.com/ljylearnsmore/p/14122396.html
Copyright © 2011-2022 走看看