vue常用指令总结

1,v-bind动态属性

作用 : 给标签属性赋Vue变量

  • 语法: v-bind:属性名="vue变量"
  • 简写: :属性名="vue变量"
<!-- vue指令-v-bind属性动态赋值 -->
<a v-bind:href="url">我是a标签</a>
<img :src="imgSrc">

2, v-on事件绑定

作用 : 给绑定绑定事件

  • 语法

v-on:事件名="methods中的函数"

v-on:事件名="methods中的函数(实参)"

  • 简写: @事件名="methods中的函数"
<!-- vue指令:   v-on事件绑定-->
<p>你要买商品的数量: {{count}}</p>
<button v-on:click="addFn">增加1个</button>
<button v-on:click="addCountFn(5)">一次加5件</button>
<button @click="subFn">减少</button>
<script>
    export default {
        // ...其他省略
        methods: {
            addFn(){ // this代表export default后面的组件对象(下属有data里return出来的属性)
                this.count++
            addCountFn(num){
                this.count += num
            subFn(){
                this.count--
</script>

2.1, v-on修饰符

语法: @事件名.修饰符="methods里函数"

    • .stop - 阻止事件冒泡
    • .prevent - 阻止默认行为
<template>
  <div @click="fatherFn">
    <!-- vue对事件进行了修饰符设置, 在事件后面.修饰符名即可使用更多的功能 -->
    <button @click.stop="btn">.stop阻止事件冒泡</button>
    <a href="http://www.baidu.com" @click.prevent="btn">.prevent阻止默认行为</a>
</template>
<script>
export default {
  methods: {
    fatherFn(){
      console.log("father被触发");
    btn(){
      console.log(1);
</script>

2.2 , v-on按键修饰符

语法:

  • @keyup.enter - 监测回车按键
  • @keyup.esc - 监测返回按键
<template>
    <input type="text" @keydown.enter="enterFn">
    <input type="text" @keydown.esc="escFn">
</template>
<script>
export default {
 methods: {
   enterFn(){
     console.log("enter回车按键了");
   escFn(){
     console.log("esc按键了");
</script>

3, v-model双向绑定

作用 : 把表单值和Vue变量双向绑定

  • 语法: v-model="vue数据变量"
  • 双向数据绑定
    • 数据变化 -> 视图自动同步
    • 视图变化 -> 数据自动同步

3.1 v-model修饰符

语法 : v-model.修饰符="vue数据变量"

    • .number 以parseFloat转成数字类型
    • .trim 去除首尾空白字符
    • .lazy 在change时触发而非inupt时

4, v-html

作用 : 设置内容

  • 语法: v-html="vue数据变量"
  • 注意: 会覆盖插值表达式
<template>
    <p v-html="str"></p>
</template>
<script>
export default {
  data() {
    return {
      str: "<span>我是一个span标签</span>"
</script>

5, v-show和v-if

作用 : 控制标签显示或隐藏

  • 语法:

v-show="vue变量"

v-if="vue变量"

  • 原理

v-show 用的隐藏 (频繁切换使用)

v-if 直接从DOM树上移除

<template>
    <h1 v-show="isOk">v-show的盒子</h1>
    <h1 v-if="isOk">v-if的盒子</h1>
      <p v-if="age > 18">我成年了</p>
      <p v-else>还得多吃饭</p>
</template>
<script>
export default {
  data() {
    return {
      isOk: true,
      age: 15
</script>

6, v-for

作用 : 用数据循环生成标签

  • 语法

v-for="(值变量, 索引变量) in 目标结构"

v-for="值变量 in 目标结构"

  • 目标结构:

可以遍历数组 / 对象 / 数字 / 字符串

  • 注意:
    v-for的临时变量名不能用到v-for范围外
    同级标签的key值不能重复
<template>
  <div id="app">
      <!-- v-for 把一组数据, 渲染成一组DOM -->
      <!-- 口诀: 让谁循环生成, v-for就写谁身上 -->
      <p>学生姓名</p>
        <li v-for="(item, index) in arr" :key="item">
          {{ index }} - {{ item }}
</template>
<script>
export default {
  data() {
    return {
      arr: ["小明", "小欢欢", "大黄"]
</script>

7, 自定义指令

作用:需要对普通 DOM 元素进行底层操作,内置的指令不够用时 , 这时候就会用到自定义指令

7.1 局部注册

<template>
      <!-- <input type="text" v-gfocus> -->
      <input type="text" v-focus>
</template>
<script>
// 目标: 创建 "自定义指令", 让输入框自动聚焦
// 1. 创建自定义指令
// 全局 / 局部
// 2. 在标签上使用自定义指令  v-指令名
// 注意:
// inserted方法 - 指令所在标签, 被插入到网页上触发(一次)
// update方法 - 指令对应数据/标签更新时, 此方法执行
export default {
    data(){
        return {
            colorStr: 'red'
    directives: {
        focus: {
            inserted(el){
                el.focus()
</script>
<style>