vue自定义指令directive

vue自定义指令directive

基本介绍

自定义指令

Vue框架给开发者提供了许多指令,例如v-if 、v-else、 v-html、v-show、v-text、v-model、v-bind等等,这些指令都是固定的,并不能任意满足开发需要,有时开发需要一个指令而框架还没有提供,就需要开发者自己定义,称为“自定义指令”。

关键字:directive directives

声明语法

// 1. 声明全局指令
Vue.directive(指令名称,{ 配置对象成员 })

// 2. 声明私有指令
new Vue({
  directives:{
    指令名称:{ 配置对象成员 }
  }
})

// 配置对象:
inserted(m){
  m:代表使用该指令的html标签dom对象,可以通过m进行原始dom操作实现业务需求
}

注意:私有指令directives关键字与el、data等都是并列的。

获得焦点-私有指令

案例

​ 给案例创建一个私有自定义指令,使得在页面加载完毕后, ”输入框“ 自动获得焦点。

  1. 创建指令:
// 注册自定义指令
directives:{
    // 指令名称注册时不要设置"v-",使用时再设置
    'dian':{
        // inserted 是固定用法
        // inserted:时机的事情,代表是div容器被Vue实例编译完毕,并且也渲染好了
        inserted:function(m){
            // m:代表使用该指令的元素dom对象
            // dom对象可以通过webapi技术操作页面元素
            // m.style.color = 'red'
            m.focus() // 使得input框元素获得焦点
        }
    }
},
  1. 应用指令:
<input type="text" v-dian v-model="newbrand" @keyup.enter="add" @keyup.esc="newbrand=''" />

注意:无论是全局指令还是私有指令,声明的时候都不用设置v-前缀,使用的时候再添加上即可。

获得焦点-全局指令

案例

​ 给案例创建一个全局自定义指令,使得页面加载完毕后,”输入框“ 自动获得焦点。

  1. 创建指令:
Vue.directive('dian2',{
  inserted(m){
    // m:代表使用指令的html对象(dom对象)
    // console.dir(m)
    // 使得m对象获得焦点
    m.focus()
  }
})

var vm = new Vue()
  1. 应用指令:
<input type="text" v-dian2 v-model="newbrand" @keyup.enter="add" @keyup.esc="newbrand=''" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值