自定义指令,全局,局部,注册

让输入框自动获取焦点(每次刷新自动获取焦点)

javascript 复制代码
<template>
  <div>
    <h3>自定义指令</h3>
    <input ref="inp" type="text">
  </div>
</template>

<script>
export default {
  mounted(){
    this.$refs.inp.focus()

  }

}
</script>

<style>

</style>

1.全局注册指令

在main.js中全局注册指令

javascript 复制代码
import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

// 全局注册指令
// 第一个参数是指令名,第二个参数是指令的配置项(在配置项里可以写指令相关的钩子,相关的生命周期函数)
Vue.directive('focus', {
  // inserted会在指令所在元素被插入到页面时触发
  inserted(el) {
    // el就是指令所绑定的元素
    el.focus()


  }
})


new Vue({
  render: h => h(App),
}).$mount('#app')
javascript 复制代码
《!--在input标签中写上自定义指令 v-自定义的指令名 -->
<template>
  <div>
    <h3>自定义指令</h3>
    <input v-focus ref="inp" type="text">
  </div>
</template>

<script>
export default {
  // mounted(){
  //   this.$refs.inp.focus()

  // }

}
</script>

<style>

</style>

2.局部注册指令(只在当前组件范围使用)

javascript 复制代码
<template>
  <div>
    <h3>自定义指令</h3>
    <input v-focus ref="inp" type="text">
  </div>
</template>

<script>
export default {
  // mounted(){
  //   this.$refs.inp.focus()

  // }
  directives:{
    // 指令名:指令的配置项
    focus:{
      // 这里同样也有个形参el
      inserted(el){
        el.focus()
      }
    }
  }

}
</script>

<style>

</style>

封装一个指令v-color

自定义指令 v-color ,然后在h1标签中写入v-color指令,但是如果指令颜色写固定为red的话,每个使用该指令的标签都是同样的颜色。

希望标签是不同颜色,将该自定义指令传入不同的值,在data中定义不同的值。

但是自定义指令中是拿不到传入指令的值的,所以必须通过另一个配置项binding,通过binding.value取得传入的指令的值

javascript 复制代码
<template>
  <div>
    <!--相当于给两个指令传入不同的值 -->
    <h1 v-color="color1">指令的值1测试</h1>
    <h1 v-color="color2">指令的值2测试</h1>
    
  </div>
</template>

<script>
export default {
  data(){
    return{
      color1:'red',
      color2:'green'

    }
  },
  directives:{
    color:{
      //1.inserted提供的是元素被添加到页面中的逻辑,直接修改数据是无法改变颜色的
      // el形参表示的是传入的dom元素
      inserted(el,binding){
        // console.log(el,binding.value);
        
        // 如何拿到传递的不同的值?在binding配置对象中通过binding.value中拿到所对应的变量值
        // binding.value就是指令的值
        el.style.color = binding.value
      },
      // update(el,binding){
      //   el.style.color = binding.value
      // }
    }
  }

}
</script>

<style>

</style>
相关推荐
IT_陈寒16 分钟前
Vite动态导入把我坑惨了,原来要这样用才对
前端·人工智能·后端
DFT计算杂谈19 分钟前
KPROJ编译教程
java·前端·python·算法·conda
觅_22 分钟前
前端学习后端的时候 选择一个技术
前端·学习
独泪了无痕25 分钟前
CryptoJS:数据安全的JavaScript加密利器
前端·vue.js·node.js
发现一只大呆瓜1 小时前
一文搞懂 Vite 处理CommonJS包、按需编译逻辑及 Rollup 插件兼容规则
前端
Edwardwu1 小时前
写了个y-mxgraph:给 draw.io 接上了 Yjs,顺便解决了部署在 iframe 里的一堆问题
前端·typescript
其实防守也摸鱼1 小时前
软件安全与漏洞--软件安全编码
java·前端·网络·安全·网络安全·web·工具
发现一只大呆瓜2 小时前
Vite 开发预构建机制详解,搞懂 esbuild 与 Rollup 分工差异
前端·面试·vite
熊猫_豆豆2 小时前
一个模拟四轴飞行器在随机气流扰动下悬停飞行的交互式3D仿真网页,包含飞行器建模与PID控制算法
javascript·3d·html·四轴无人机模拟飞行
小贺儿开发2 小时前
一句话生成网页 + 自动化办公(OpenCode + DeepSeek-V4)
css·自动化·html·工具·代码·网页·deepseek