【博学谷学习记录】超强总结 用心分享|前端学习w19- vue指令(4)

65 阅读1分钟

Vue中有很多的指令,且形式都是:v-???? 我在这里总结了12个常见指令,顺序如下:v-on、v-bind、v-model、v-for、v-show、v-if、v-else/v-else-if、v-text、 v-html、v-cloak、v-once、v-pre

1. v-on

用于绑定事件,用法如下:

(1) 先来看看有哪些事件:

绑定键盘事件:

<input type="text" placeholder="请输入" v-on:keyup="ShowInfo" />

绑定鼠标单击事件:

<a href="#" v-on:click="ShowInfo">鼠标单击事件</a>

绑定鼠标覆盖事件:

<a href="#" v-on:mouseover="ShowInfo">鼠标覆盖事件</a>

绑定鼠标双击事件:

<a href="#" v-on:dblclick="ShowInfo">鼠标双击事件</a>

总之就是替换掉v-on:后边的事件即可,下面总结一下可能会用到的事件:

鼠标事件

image.png

image.png 在这里再总结一下input框的几个事件:

input事件:适用于实时查询,每输入一个字符都会出发这个事件

<input type="text" v-on:input="ShowInfo" />

blur事件:失去焦点时触发的事件

<input type="text" v-on:blur="ShowInfo" />

(2) v-on的简写形式:

v-on:可以简写成@,即上边所有的v-on:事件名都可以简写成@事件名,比如@click@keyup@input……

(3) 传参(以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>test</title>
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <a href="#" v-on:click="ShowInfo">{{msg}}</a>
    </div>
    <script>
      Vue.config.productionTip = false; //阻止Vue在启动时生成生产提示
      const vm = new Vue({
        el: '#root',
        data: {
          msg: '点我提示信息',
        },
        methods: {
          ShowInfo(event) {
            console.log(event); //event是这个事件对象,这里会有一个默认的参数
          },
        },
      });
    </script>
  </body>
</html>

v-on: 可以简写为 @@click="ShowInfo"

传参:

<!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>test</title>
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <a href="#" @click="ShowInfo(1)">{{msg}}</a>
    </div>
    <script>
      Vue.config.productionTip = false;
      const vm = new Vue({
        el: '#root',
        data: {
          msg: '点我提示信息',
        },
        methods: {
          ShowInfo(num) {
            console.log(num); //打印结果为1
          },
        },
      });
    </script>
  </body>
</html>

这样传参会导致丢失event,那么怎么给event占位呢?看下面:

image.png 总结:

事件的基本使用:

1.使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;

2.@click="demo" 和 @click="demo($event)" 效果一致,但后者可以传参;

(4) v-on绑定多个事件:

语法:v-on="{事件名:方法名,事件名:方法名,……}",v-on里面是一个对象,例如:

<!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>test</title>
    <script src="./js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <!-- v-on绑定多个事件: -->
      <button v-on="{click:single,dblclick:double}">单击n+1,双击m-1</button>
    </div>
    <script>
      Vue.config.productionTip = false;
      const vm = new Vue({
        el: '#root',
        data: {
          n: 1,
          m: 2,
        },
        methods: {
          single() {
            console.log('我被单击了');
          },
          double() {
            console.log('我被双击了');
          },
        },
      });
    </script>
  </body>
</html>

2. v-bind

单向数据绑定,它是为标签里的某个属性绑定值用的 下次课在复习!