VUE---自定义指令

自定义指令:自己定义的指令,可以封装一些dom操作,扩展额外功能。可分为全局注册与                        局部注册。

全局注册(main.js中注册):

Vue.directive('指令名称',{

        bind(ele,binding) {},  // 只执行一次;DOM渲染之前执行,里面可以进行样式操作

        inserted(ele,binding) {},  // 只执行一次;DOM渲染之后执行,里面可以进行行为操作                                                 --常用

        update(ele,binding) {}, // 数据更新后执行--常用

        componentUpdated(ele,binding) {}, // 父子组件都更新后执行

        unbind(ele,binding) {}, // 指令解绑的时候执行

})

 局部注册(main.js中注册):

export default {

        Vue.directive('指令名称',{

                bind(ele,binding) {},  // 只执行一次;DOM渲染之前执行,里面可以进行样式操作

                inserted(ele,binding) {},  // 只执行一次;DOM渲染之后执行,里面可以进行行                                                               为操作--常用

                update(ele,binding) {}, // 数据更新后执行--常用

                componentUpdated(ele,binding) {}, // 父子组件都更新后执行

                unbind(ele,binding) {}, // 指令解绑的时候执行

        })

}

指令值的语法:
        ① v-指令名 = "指令值" ,通过 等号 可以绑定指令的值
        ② 通过 binding.value 可以拿到指令的值
        ③ 通过 update 钩子 ,可以监听指令值的变化,进行dom更新操作

 

示例1---打开页面时,输入框自动获取焦点(全局注册,main.js)

// vue页面
<input type="text" v-focus />

// main.js
Vue.directive('focus', {
  // 获取焦点
  inserted(ele, binding) {
    console.log(ele) // 绑定指令的元素
    console.log(binding) // 指令的相关信息(指令的值等)
    ele.focus() // 让元素获取焦点
  },
})

结果如下: 

控制台打印的消息如下:

示例2--改变页面字体颜色(局部注册,在页面中注册): 

// vue页面
<h3 v-color="color">需求2:Ajax请求数据,并设计loading指令</h3>

<script>
export default {
  data() {
    return {
      color: 'red',
    }
  },
  directives: {
    color: {
      inserted(el, binding) {
        el.style.color = binding.value
      },
      update(el, binding) {
        el.style.color = binding.value
      },
    },
  },
}
</script>

结果如下:

修改color变量的值后,页面字体颜色自动更新如下

相关推荐

  1. Vue定义指令

    2024-01-19 12:16:05       46 阅读
  2. Vue定义指令

    2024-01-19 12:16:05       48 阅读
  3. Vue-------定义指令

    2024-01-19 12:16:05       37 阅读
  4. Vue定义指令

    2024-01-19 12:16:05       28 阅读
  5. vue定义指令

    2024-01-19 12:16:05       21 阅读
  6. (详解)Vue定义指令

    2024-01-19 12:16:05       65 阅读
  7. vue3定义指令

    2024-01-19 12:16:05       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 12:16:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 12:16:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 12:16:05       82 阅读
  4. Python语言-面向对象

    2024-01-19 12:16:05       91 阅读

热门阅读

  1. 【备战蓝桥杯】图的遍历问题

    2024-01-19 12:16:05       48 阅读
  2. 为什么要设计双亲委派机制

    2024-01-19 12:16:05       51 阅读
  3. element-ui 打包流程源码解析(上)

    2024-01-19 12:16:05       59 阅读
  4. Vue2 Echarts 3D饼图

    2024-01-19 12:16:05       48 阅读
  5. golang学习-channel管道

    2024-01-19 12:16:05       47 阅读
  6. What is `@Controller` does?

    2024-01-19 12:16:05       63 阅读