Vue全局Api的概念以及v-directive自定义指令

来源于技术胖的视屏讲解
1.全局API的概念:在构造器外部用Vue提供给我们的Api函数来定义新的功能
2.v-directive自定义指令
2.1效果图
在这里插入图片描述
2.2代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>directive</title>
    <script src="../assets/js/vue.js" type="text/javascript"></script>
  </head>
  <body>
    <h1>directive 自定义指令</h1>
    <hr />
    <div id="app">
        <div v-fanrenfeng="color" >{{num}}</div>
        <p><button @click="add">Add</button></p>
    </div>
    <script>
        //el----所绑定的dom元素,这里为div
        // binding--
        Vue.directive('fanrenfeng',function(el,binding){
            console.log(el);
            console.log(binding);
            console.log(binding.name);
            console.log(binding.value)
            console.log(binding.expression)
            el.style="color:"+binding.value;
        })
        var app = new Vue({
            el:'#app',
            data:{
                num:10,
                color:'red'
            },
            methods:{
                add(){
                    this.num++
                }
            }
        })
    </script>
  </body>
</html>

2.3自定义组件的生命周期

代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>directive</title>
    <script src="../assets/js/vue.js" type="text/javascript"></script>
  </head>
  <body>
    <h1>directive 自定义指令</h1>
    <hr />
    <div id="app">
        <div v-fanrenfeng="color" >{{num}}</div>
        <p><button @click="add">Add</button></p>
    </div>

    <p>
        <button onclick="unbind()">解绑</button>
    </p>
    <script>

        function unbind(){
            app.$destroy()
        }
        //el----所绑定的dom元素,这里为div
        // binding--
        Vue.directive('fanrenfeng',{
            bind:function(el,binding){//被绑定
                el.style="color:"+binding.value
                console.log('1-bind')
            },
            inserted:function(){//绑定到节点
                console.log('2-inserted')
            },
            update:function(){//组件更新
                console.log('3-update')
            },
            componentUpdated:function(){//组件更新完成
                console.log('4-componentUpdated')
            },
            unbind:function(){//解绑
                console.log('5-unbind')
            }
        })
        var app = new Vue({
            el:'#app',
            data:{
                num:10,
                color:'red'
            },
            methods:{
                add(){
                    this.num++
                }
            }
        })
    </script>
  </body>
</html>


页面初始效果图
在这里插入图片描述
当点击Add按钮时,页面效果
在这里插入图片描述
当点击解绑时,页面效果,此时再点击Add按钮,数字已经不会增加了。
在这里插入图片描述
在指令的生命周期中写样式
在这里插入图片描述
页面效果图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值