Vue 自定义全局指令和局部指令demo

本文展示了如何在Vue中注册全局和局部自定义指令,以实现文本自动转大写及输入框自动聚焦的功能。通过`v-upper-text`指令转换文本内容为大写,并利用`v-focus`指令使输入框在页面加载时自动获得焦点。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <p v-upper-text="message"></p>
        自定义选中焦点 <input type="text" v-focus>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        //注册全局自定义指令,可以在多个Vue管理的入口下使用该指令
        //第一个参数是指令名
        Vue.directive('upper-text',{
            

            bind:function(el){
                console.log("bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。");
                el.style.color="red"
            },

            //一般对js操作在inserted中,只调用一次
            //el是当前指令作用的那个Dom元素
            //binding用于获取使用了当前指令的绑定值(value)、表达式(expression)、指令名(name)等
            inserted:function(el,binding){
                console.log("inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。")
                //将所有字母文本内容转换为大写
                el.innerHTML=binding.value.toUpperCase()
            },
            update:function(el,binding){
                console.log("update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。");
            },
            componentUpdated:function(){
                console.log("componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。")
            },
            unbind:function(){
                console.log("unbind:只调用一次,指令与元素解绑时调用。");
            }
        })

        new Vue({
            el:"#app",
            data:{
                message:'hello word'
            },
            //注册局部自定义指令,只能在当前Vue管理中使用
            directives: {
                'focus':{ //指令名
                    //刷新页码自动获取焦点
                    inserted:function(el,binding){
                        el.focus();
                    }
                }
            }
        })
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoshengjinbu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值