Vue: 自定义指令

作者: 写代码的海怪 | 来源:发表于2019-01-13 02:03 被阅读4次

有人可能感觉自定义指令好像是个新东西,还要学自定义,一听就高大上不想学。其实指令可以简单地理解为组件的一个小弟,专门帮助组件做一些事情的人。一句话来概括指令可以说成了:“现在组件在干 XXX 的时候,指令我就要做 OOO 的事了”

注册指令

注册指令和注册组件是差不多的,有全局注册也有局部注册,只不过将 components 变成了directives。

全局注册

Vue.directive('focus', {
  inserted: function (el) {
    console.log('Hello, I am ' + el)
  }
})

局部注册

directives: {
  focus: {
    inserted: function (el) {
      console.log('Hello, I am ' + el)
    }
  }
}

生命钩子函数

  1. bind: 只调用一次,指令第一次绑定到元素时调用。
  2. inserted: 被绑定元素插入父节点时调用。
  3. update: 被绑定元素所在的模板更新时调用。
  4. componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
  5. unbind: 只调用一次,指令与元素解绑时调用。

钩子函数参数

一般每个钩子都会传入 4 个参数:el, binding, vnode, oldNode。通常我们只用前面两个参数就够了。

  1. el: 指令所绑定的元素,可以用来直接操作DOM
  2. binding: 一个对象:
    1. name: 指令名,不包括 v-前缀
    2. value: 指令绑定的新值, v-my-dir="1 + 1", value -> 2
    3. oldValue: 指令绑定的前一个值
    4. expression: 绑定值的字符串形式,如 v-my-dir="1 + 1", expression -> 1" + 1"
    5. arg: 传给指令的参数, v-my-dir:foo, arg -> foo
  3. vnode: Vue 编译生成的虚拟节点

实例

如果上面看得有点晕可以看下面的例子的输出就容易理解了。先对指令定义。

Vue.directive('test', {
    bind(ebl, binding) {
        el.innerHTML = `
            name -> ${binding.name}
            value -> ${binding.value}
            expression -> ${binding.expression}
            argument -> ${binding.arg}
            modifiers -> ${JSON.stringify(binding.modifiers)}
        `
    }
})

let app = new Vue({
    el: '#root',
    data() {
        return {
            msg: 'Hello World'
        }
    },
})

接下下使用这个指令。

<pre v-test:nice.a.b.c="msg">Hello World</pre>

结果如下。

结果

图解

图解

相关文章

  • season2-全局API

    第1节:Vue.directive 自定义指令 Vue.directive自定义指令 自定义的指令:changec...

  • Vue div节点滚动事件-加载更多

    使用Vue.directive注册全局指令 绑定事件 对于Vue自定义指令不明白的同学请移步: Vue自定义指令 ...

  • VUE-2:自定义指令、事件

    directive自定义指令 我们还可以通过`Vue`提供的directive方法来自定义指令 注册指令 `vue...

  • vue入门6---vue基本指令、自定义指令、插件

    一、vue常用指令概览 二、vue自定义指令 注册全局指令Vue.directive('my-directive'...

  • vue自定义指令初探

    vue自定义指令初探 一、什么是自定义指令 自定义指令是用来操作DOM的。尽管Vue推崇数据驱动视图的理念,但并非...

  • vue 有自定义指令

    vue 的自定义指令,分为全局自定义指令和局部自定义指令,局部自定义指令等价于局部组件。 自定义指令可以对DOM进...

  • Vue指令钩子函数

    Vue指令上篇文章有讲过了,现在分析Vue指令钩子函数。 自定义指令 全局定义:Vue.directive( ' ...

  • vue自定义指令

    除了内置的指令外,Vue 也允许注册自定义指令。 vue用Vue.directive(id,definition)...

  • vue知识集锦(三)

    自定义指令 除了核心功能默认内置的指令 (v-model和v-show),Vue 也允许注册自定义指令。尽管Vue...

  • Vue基础(五)--自定义指令与过渡

    1.自定义指令 分类:全局指令、局部指令 1.1 自定义全局指令 使用全局方法 Vue.directive(指令I...

网友评论

    本文标题:Vue: 自定义指令

    本文链接:https://www.haomeiwen.com/subject/ygfkdqtx.html