美文网首页
Vue 2.0 自定义指令

Vue 2.0 自定义指令

作者: Pretend_ebb0 | 来源:发表于2018-05-08 11:17 被阅读0次

自定义指令

自定义指令基本就是用来操作DOM的,虽然官方推荐数据驱动视图,有时候还是需要自定义指令来操作DOM,指令可复用.

自定义指令,可以全局和局部注册,

1. 全局自定义指令

全局自定义指令需要使用 全局 API Vue.directive( id, [definition] ) definition 可以是 函数和 json对象

自定义指令有5个钩子函数
Vue.directive('hello',{
    bind(el,binding){
        alert('只调用一次,指令第一次绑定到元素时调用,可执行初始化操作')
    },
    inserted(){
        alert('被绑定元素插入DOM时调用')
    },
    update(){
        alert('被绑定元素所在模板更新时调用')
    },
    componentUpdated(){
        alert('被绑定元素所在模板更新完成后调用')
    },
    unbind(){
        alert('只调用一次指令与元素解绑时调用')
    }
})
钩子函数参数
  • el:指令所绑定的元素,可以用来直接操作 DOM 。
  • binding:一个对象包含以下属性
    • name:指令名,不包括 v- 前缀
    • rawName:指令名 包含 v-
    • value:指令绑定值 比如v-hello='name' 绑定值就是vue data对象里 的name值
    • expression:指令绑定值的字符串形式
    • arg:传给指令的参数 v-hello:aaa='name' aaa就是参数 aaa是自己定义的
    • modifiers:一个包含修饰符的对象例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }

注意: val 指令绑定值 只能是 vue实例下 data对象的数据 arg 参数是自己随便定义的

查看钩子函数和参数演示

自定义指令语法简写

以上自定义指令语法 有些繁琐 vue.directive() 允许你传入一个函数 相当于 bind 和 update

// 注册 (指令函数)
Vue.directive('my-directive', function () {
  // 这里将会被 `bind` 和 `update` 调用
})

实例

  1. 使用自定义指令做一个输入框自定聚焦
<div id="app">
  <input v-focus type="" name="" id="" value="" />
</div>
Vue.directive('focus',{
//被绑定元素插入DOM时触发
  inserted:function(el){
    el.focus()
  }
})

new Vue({
  el:'#app',
})

查看实例演示

  1. 使用自定义指令做元素拖拽
<div id="app">
    <div class="box bgred lt0" v-drag></div>
    <div class="box bgblue rt0" v-drag></div>
</div>
Vue.directive('drag',function(el){
    el.onmousedown=function(e){
        var w = e.clientX - el.offsetLeft
        var h = e.clientY - el.offsetTop
        document.onmousemove=function(e){
            var x = e.clientX-w;
            var y = e.clientY-h;
            el.style.left=x+"px"
            el.style.top=y+'px'
        };
        document.onmouseup=function(){
            document.onmousemove=null;
            document.onmouseup =null
        }
    }
})
var vm = new Vue({
    el:'#app',
})

拖拽指令演示

相关文章

  • VUE初级入门实践

    VUE概述 生命周期 指令 内置指令 自定义指令 过滤器 内置过滤器 VUE1.0版本 VUE2.0版本(无内置过...

  • vue 之 自定义指令

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

  • VUE自定义弹窗指令

    目标 使用vue2.0实现自定义弹窗指令,当标签有该指令时,点击标签可以弹出弹窗 实现

  • vue2.0移动端触摸反馈指令

    Vue v2.0 自定义指令 顾名思义,这个是为vue移动端web项目打造的触摸反馈指令,高度模拟App反馈效果;...

  • vue中自定义指令的使用

    除了默认设置的核心指令(v-model和v-show),vue也允许注册自定义指令,注意在vue2.0里面,代码复...

  • vue-自定义指令学习笔记

    简介 除了核心功能默认内置的指令,Vue也可以注册自定义指令。注意,在Vue2.0中,代码复用和抽象的主要形式是组...

  • Vue自定义指令(directive)笔记

    Vue.directive (自定义指令) 使用方法,类似v-model等内置指令,2.0的为了提升性能,所以在指...

  • season2-全局API

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

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

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

  • vue2.0—自定义全局指令

    vue2.0—自定义全局指令 构建项目和创建组件就不细说了,不懂的可以去官方文档API学习 VUE官方文档:htt...

网友评论

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

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