• 自定义指令


    一,原生指令

    v-bind:属性名="变量名"

    v-on:事件名="函数名"

    缩写模式:

    :属性名="变量名"

    @事件名="函数名"

    示例:

    1. <input type="text" v-bind:disabled="isDisabled" v-on:change="change"/>
    2. <input type="text" :disabled="isDisabled" @change="change"/>
    3. <script>
    4. export default {
    5. data() {
    6. return {
    7. isDisabled: true
    8. }
    9. },
    10. methods: {
    11. change(event) {
    12. console.log(event)
    13. }
    14. }
    15. }
    16. script>

    二,动态属性名

    :[属性变量名]="变量名"

    @[属性变量名]="函数名"

    示例:

    <input type="text" :[key]="isDisabled" @[eventName]="change"/>
    

    三,自定义指令

    通常会在main.js中注册全局的自定义指令。

    主要语法

    Vue.directive(指令名,{ 钩子函数名称: 钩子函数 })

    钩子函数:

    • bind - 只调用一次,在指令第一次绑定到元素的时候调用。通常可用来做一些初始化操作
    • unbind - 只调用一次,指令与元素解绑时调用
    • inserted - 被绑定元素插入父节点时调用(只能保证父节点存在,但不一定插入到文档中)
    • update - 所在的组件的虚拟dom更新时候调用(但是可能发生在他的子组件虚拟dom更新前)
    • componentUpdated - 所在组件和子组件的所有虚拟dom全部更新完成后调用

    钩子函数的参数

    • el - 被绑定的节点
    • biding - 存储信息的对象,包含的属性有

                            name:指令名(不包含v-前缀)

                            value:绑定的指令值(例如v-my="value")

                            oldValue:指令绑定的前一个值(仅在update和componentUpdated 钩子中可用)

                            expression:字符串形式的指令值的表达式(例如v-my="1+1" => 值为:"1+1")

                            arg:传给指令的参数

                            modifiers:包含修饰符的对象

    • vnode - vue编译生成的虚拟节点
    • oldVnode - 上一个虚拟节点(仅在update和componentUpdated 钩子中可用)

    示例:

    1. // main.js
    2. // 自定义指令-防止重复点击
    3. Vue.directive('preventReClick', {
    4. inserted (el, binding) {
    5. el.addEventListener('click', () => {
    6. if (!el.disabled) {
    7. el.disabled = true;
    8. setTimeout(() => {
    9. el.disabled = false;
    10. }, binding.value || 3000);
    11. }
    12. });
    13. }
    14. });
    15. // template
    16. <el-button type="primary" @click="submit()" v-preventReClick>提交el-button>

  • 相关阅读:
    学会 Python 自动安装第三方库,从此跟pip说拜拜
    一个例子了解交叉编译
    [Linux] TCP协议介绍(3): TCP协议的“四次挥手“过程、状态分析...
    ubunut搭建aarch64 cuda交叉编译环境记录
    java毕业设计单车商城Mybatis+系统+数据库+调试部署
    mybatis快速搭建入门
    .NET下数据库的负载均衡(有趣实验)(续)
    论文学习记录随笔 多标签之GLOCAL
    Linux环境Docker的安装过程
    JSP常见错误以及解决方案
  • 原文地址:https://blog.csdn.net/wjs0406/article/details/133066160