Vue学习(事件监听、条件判断)

一、事件监听

       1、v-on:(语法糖@)的基本使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-on的基本使用</title>
</head>
<body>
<div id="app">
  <h2>{{counter}}</h2>
<!--  <button v-on:click="counter++">+</button>-->
<!--  <button v-on:click="counter--">-</button>-->
<!--  v-on:的语法糖   @-->
  <button v-on:click="increment">+</button>
  <button v-on: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>
 

          2、v-on参数问题

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

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

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-on参数问题</title>
</head>
<body>
<div id="app">
  <!--情况一:事件调用的方法没有参数-->
  <button @click="btn1click">按钮1</button>
  <button @click="btn1click()">按钮1</button>


  <!--情况二-->
  <button @click="btn2click(123)">按钮2</button>
  <!--如果函数需要参数,但是没有传入,那么函数的形参为undefined-->
  <button @click="btn2click()">按钮2</button>
    <!-- 在事件定义写函数时省略了小括号,但是方法本身需要一个参数,
  这个时候vue会默认将浏览器产生的event事件对象作为参数传入到方法-->
  <button @click="btn2click">按钮2</button>

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

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',    //用于挂载要管理的元素
    data:{    //定义一些数据
      
    },
    methods: {
      btn1click() {
        console.log('btn1click');
      },
      btn2click(abc) {
        console.log('--------',abc);
      },
      btn3click(abc,event) {
        console.log('+++',abc,event);
      }
    }
  })
</script>
</body>
</html>

          3、v-on的修饰符

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-on的修饰符</title>
</head>
<body>
  <div id="app">
    <div @click="divClick">
      <!--1、停止冒泡-->
      <button @click.stop="btnClick">按钮</button>
    </div>

    <br/>
    <div>
      <form action="baidu">
        <!--2、.prevent 阻止默认事件-->
        <input type="submit" value="提交" @click.prevent="submitClick">
      </form>
    </div>

    <!--3、监听某个按键,此处监听回车键-->
    <input type="text" @keyup.enter="keyUp">

    <!--4、once修饰符,只在第一次点击有反应-->
    <button @click.once="btn2Click">按钮</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el:'#app',    //用于挂载要管理的元素
      data:{    //定义一些数据
        message:'你好,vue'
      },
      methods: {
        btnClick() {
          console.log("btnClick");
        },
        divClick() {
          console.log("divClick");
        },
        submitClick() {
          console.log('submitClick');
        },
        keyUp() {
          console.log('keyUp');
        },
        btn2Click() {
          console.log('btn2Click');
        }
      }
    })
  </script>
</body>
</html>

二、条件判断

       1、v-if的使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-if的使用</title>
</head>
<body>
  <div id="app">
    <h2 v-if="isShow">
      {{message}}
    </h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el:'#app',    //用于挂载要管理的元素
      data:{    //定义一些数据
        message:'你好,vue',
        isShow: true
      }
    })
  </script>
</body>
</html>

          2、v-if 和 v-else 的结合使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-if和v-else的结合使用</title>
</head>
<body>
  <div id="app">
    <h2 v-if="isShow">
      {{message}}
    </h2>
    <h1 v-else>
      isShow为false时显示我
    </h1>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el:'#app',    //用于挂载要管理的元素
      data:{    //定义一些数据
        message:'你好,vue',
        isShow: true
      }
    })
  </script>
</body>
</html>

          3、v-if 和 v-else-if 和 v-else 的使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-if和v-else-if和v-else的使用</title>
</head>
<body>

  <div id="app">
    <!--相比此种逻辑,使用计算属性较为简便-->
    <h2 v-if="score>=90">优秀</h2>
    <h2 v-else-if="score>=80">良好</h2>
    <h2 v-else-if="score>=60">及格</h2>
    <h2 v-else>不及格</h2>

    <h1>{{result}}</h1>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el:'#app',    //用于挂载要管理的元素
      data:{    //定义一些数据
        score: 99
      },
      //使用计算属性较为简便
      computed: {
        result() {
          let showMessage=' ';
          if(this.score>=90){
            showMessage ='优秀'
          }
          else if (this.score>=80){
            showMessage ='良好'
          }
          else if(this.score>=60){
            showMessage ='及格'
          }
          else{
            showMessage ='不及格'
          }
          return showMessage
        }
      }
    })
  </script>

</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

coder_Alger

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

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

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

打赏作者

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

抵扣说明:

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

余额充值