vue-自定义指令

news2024/9/22 7:28:11

需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。

需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。

语法:

局部使用:

directives: {
  focus: {
    // 指令的定义
    inserted: function (el) {
      el.focus()
    }
  }
}

全局使用:

<script>
    // 注册一个全局自定义指令 `v-focus`
    Vue.directive('focus', {
        // 当被绑定的元素插入到 DOM 中时……
        inserted: function (el) {
            // 聚焦元素
            el.focus()
        }
    })
</script>

配置对象时常用的三个回调:

bind:指令与元素成功绑定调用

inserted:指令所在元素被插入页面时调用

update:指令所在模板结构被重新解析时使用

需求1:

  <!-- 准备好一个容器-->
    <div id="root">
      <h2>当前值 <span v-text='n'></span></h2>
      <h2>放大值 <span v-big='n'></span></h2>
      <button @click="n++">计算</button>
    </div>

    <script type="text/javascript">
      Vue.config.productionTip = false;
      new Vue({
    el: '#root',
    data: {
        name:'尚硅谷',
        n:1
    },
    directives: {
        // big函数何时会被调用?1.指令与元素成功绑定时(一上来)。2.指令所在的模板被重新解析时。
        big (element,binding){
            console.log('big',this) //注意此处的this是window
            console.log(element,binding)
            element.innerText = binding.value * 10
        },
    }
})
    </script>

并且用于指令中需要操作dom,所以其中的this是window,可以拿到元素操作

配置big指令传入参数:(element,binding)

        -element:第一个参数会拿到真实dom,可以操作真实dom

        -binding:第二个参数是binding是一个对象。name是指定的名称;expression是指定表达式,由于此时是绑定的指令n;value是指定的绑定值

需求二:

    (1)函数式:(存在问题)

  <body>
    <!-- 准备好一个容器-->
    <div id="root">
      <h2>焦点 <input v-fbind='n'></span></h2>
      <button @click="n++">计算</button>
    </div>

    <script type="text/javascript">
      Vue.config.productionTip = false;
      new Vue({
    el: '#root',
    data: {
        name:'尚硅谷',
        n:1
    },
    directives: {
       fbind(element,binding){
        element.value = binding.value;
        element.focus()
       }
    }
})
    </script>

出现问题:一开始并不能获取焦点 

这种由于页面一开始解析模板,并且由于指令与数据绑定时由于element还未拿到,所以执行element.focus时,并不能生效。但是由于操作n,使数据发生改变,再次执行fbind,此时能拿到element元素

(2)对象式:(使用提供的钩子函数)

 <div id="root">
      <h2>焦点 <input v-fbind='n'></span></h2>
      <button @click="n++">计算</button>
    </div>

    <script type="text/javascript">
      Vue.config.productionTip = false;
      new Vue({
    el: '#root',
    data: {
        name:'尚硅谷',
        n:1
    },
    directives: {
      fbind: {
            //指令与元素成功绑定时(一上来)
            bind (element,binding){
                element.value = binding.value
            },
            //指令所在元素被插入页面时
            inserted (element,binding){
                element.focus()
            },
            //指令所在的模板被重新解析时
            update (element,binding){
                element.value = binding.value
            }
        }
    }
})
    </script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【硬件外设使用】——I2C

【硬件外设使用】——I2CI2C基本概念I2C通信协议I2C使用方法pyb.i2cmachine.i2cI2C可用的传感器I2C基本概念 I2C是"Inter-Integrated Circuit"的缩写&#xff0c;也被称为TWI (Two Wire Interface)。 它是一种串行通信协议&#xff0c;用于连接多个设备或组件。 I2…

记一次idea+Dockerfile+docker部署

软件版本&#xff1a;idea:2021.3,docker:19.03.9,服务器&#xff1a;centos7.8 1.centos7服务器配置 在服务器上编辑docker文件 vi /usr/lib/systemd/system/docker.service修改以ExecStart开头的行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/ru…

计算机视觉基础__图像特征

计算机视觉基础__图像特征 本篇目录&#xff1a; 一、前言 二、位图和矢量图概念 三、图像的颜色特征 四、RGB 颜色空间 五、HSV 颜色空间 六、HLS 颜色空间 七、实例代码 八、参考资料 一、前言 传统图像处理&#xff0c;需要找出图片中的关键特征&#xff0c;然后对这…

30天学会《Streamlit》(5)

30学会《Streamlit》是一项编码挑战&#xff0c;旨在帮助您开始构建Streamlit应用程序。特别是&#xff0c;您将能够&#xff1a; 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第6天 - 将…

GO变量的使用

Go变量的使用注意事项 &#xff08;1&#xff09;第一种&#xff1a;指定了变量类型&#xff0c;但是声明后若不赋值&#xff0c;则使用默认值 &#xff08;2&#xff09;第二种&#xff1a;根据值自行判断我们的变量类型**&#xff08;类型推导&#xff09;** var num10.00 …

Python ---> 衍生的数据技术

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习---->可以参考我的这篇博客&#xff1a;《我在VScode学Python》 随着人工智能技术的发展&#xff0c;挖掘和分析商业运用大数据已经成为一种推动应用&#xff0c; 推动社会发展起着…

接口优化方案

前言 最近随着国产化热潮&#xff0c;公司的用于营业的电脑全部从windows更换成了某国产化电脑&#xff0c;换成国产化之后&#xff0c;我们系统的前台web界面也由之前的jsp页面重构成vue.所以之前的一体式架构也变成了前后端分离的架构。但是在更换过程后&#xff0c;发现一些…

蓝绿部署技术方案

文章目录 ngx_lua介绍Nginxluangx_lua模块的原理&#xff1a;ngx_lua 模块执行顺序与阶段ngx_lua应用场景 JWTnginx镜像构造lua-redis蓝绿部署特性注意&#xff1a;蓝绿部署架构图nginx配置服务脚本部署使用职责分工 ngx_lua介绍 Nginx Nginx是Web服务器、HTTP反向代理和TCP代…

apache+tomcat实现动静分离和负载均衡

文章目录 ApacheTomcat整合环境通过JK实现动静分离编译mod_jk.so创建测试页面配置jk模块启动apache和tomcat测试。 ApacheTomcat负载均衡配置测试页配置mod_jk文件配置worker.properties测试 ApacheTomcat整合 Tomcat作为一个Servlet容器&#xff0c;可以用于运行Java Web应用…

Unity之c#专题篇——【不动如山核心章】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

连接VPN后无法上网 Windows Route 轻松解决

连接VPN后无法上网 Windows Route 轻松解决 引言文档添加路由 引言 很多时候&#xff0c;我们公司的 VPN 为了不占用公司的外网带宽和安全起见&#xff0c;都会禁止访问外网。我们的电脑连接 VPN 后&#xff0c;所有的网络数据包都会走 VPN&#xff0c;从而导致我们无法访问互…

ES集群配置和分词器(九)

一直在坑自己家人&#xff0c;对&#xff0c;说的就是你&#xff0c;大A. 上一章简单介绍了SpringBoot整合 EasyES (八), 如果没有看过,请观看上一章 一. Windows 集群部署 一.一 服务复制 将 es 复制3份 一.二 配置文件配置 每个服务节点的 config/eslsticsearch.yml 配置…

AANet: CTPA图像中肺动脉栓塞检测的动脉感知网络

AANet: Artery-Aware Network for Pulmonary Embolism Detection in CTPA Images 摘要 肺栓塞(PE)是危及生命的疾病&#xff0c;计算机断层肺血管造影(CTPA)是临床上最好的诊断技术 然而&#xff0c;在CTPA图像中&#xff0c;PE通常表现为血液动脉明亮区域中的黑点&#xff0…

UE4/5多人游戏详解(一、基础理论与局域网内部的连接)

目录 多人游戏理论简单讲解 点对点&#xff1a; 于是&#xff0c;服务端和客户端的概念出现了&#xff1a; 局域网连接&#xff1a; 从第三人称c项目开始 创建项目&#xff1a; 以一个客户端作为监听服务器 3个客户端&#xff0c;在场景后方使用服务器&#xff1a; 局…

leetcode:同构字符串(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构…

数字营销(三)如何确定合适的流量渠道?

一、为什么要确定付费客户特征&#xff1f; 首先营销策略是什么&#xff1f;营销策略&#xff0c;即战略&#xff0c;就是为实现主要流量侧的长期目标&#xff0c;所采取的具体打法和步骤。 比如一个网站的成功离不开获取网站流量和用户信任的建立。除了谷歌 SEO 获取流量&am…

【JavaEE初阶】多线程(一)

摄影分享&#xff01; 文章目录 认识线程&#xff08;Thread&#xff09;概念执行多线程编程创建线程的写法1.继承Thread&#xff0c;重写run2.实现Runnable接口3.使用匿名内部类&#xff0c;继承Thread4.使用匿名内部类&#xff0c;实现Runable5.使用Lambda表达式 Thread用法…

【ARMv8/v9 MMU 页表配置 01 】

文章目录 1.1 MMU1.1.1 虚拟地址位宽配置1.1.2 页面大小(grandule size)配置1.1.3 AArch64 页表项描述符格式1.1.4 内存属性配置 1.1 MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中&#xff0c;并不是所有位都用上&#xff0c;除了高 16 位用于区分内核空间和用户空间的虚拟地…

SpringCloud:ElasticSearch之数据聚合

聚合&#xff08;aggregations&#xff09; 可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如何&#xff1f; 实现这些统计功能的比数据…

数组题目总结 -- 双指针

目录① 快慢指针&#xff1a;一. 删除有序数组中的重复项1. 思路和代码I. 博主的做法&#xff1a;II. 东哥的做法&#xff1a;2. 总结二. 删除排序链表中的重复元素&#xff08;扩展&#xff09;1. 思路和代码I. 博主的做法&#xff1a;II. 东哥的做法&#xff1a;2. 总结三. 移…