Vue的全局API

Vue.directive

 Vue.directive("changecolor",function(el,binding){
   //Vue需要大写,自定义指令不能有大写字母,自定义指令此处写法需要去掉v-前缀
            console.log(el);//el是传入的div对象
            console.log(binding);//binding是一个属性
            
            // 比如这个实例中
            // name: "changecolor"
            // rawName: "v-changecolor"
            // value: "red"
            // expression: "color"
            // modifiers: {}
            // def: {bind: ƒ, update: ƒ}
            // __proto__: Object
            console.log(binding.value);
            el.style ="color:"+binding.value;
        });

binding对象

binding是一个对象,包含以下属性:
   (1)name:指令名,不包括 v- 前缀。
   (2)value:指令的绑定值,例如:v-my-directive=”1 + 1”, value 的值是 2。
   (3)oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
   (4)expression:绑定值的字符串形式。例如 v-my-directive=”1 + 1” ,expression 的值是 “1 + 1”。
   (5)arg:传给指令的参数。例如 v-my-directive:foo,arg 的值是 “foo”。
   (6)modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。

自定义指令的生命周期函数

Vue.directive("changecolor",{
   
            bind:function(){
   
                console.log('a-bind');
                console.log('a-num:'+this.num);
            },
            inserted:function(){
   
                console.log('b-inserted');
                console.log('b-num:'+this.num);
            },
            updated:function(){
   
                console.log('c-updated');
                console.log('c-num:'+this.num);
            },
            componentUpdated:function(){
   
                console.log('d-componentUpdated');
                console.log('d-num:'+this.num);
            },
            unbind:function(){
   
                console.log('e-unbind');
                console.log('e-num:'+this.num);
            }
        })

包含Vue生命周期钩子函数的实例测试图

在这里插入图片描述

Vue.extend构造器的延伸

使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。

data 选项是特例,需要注意 - 在 Vue.extend() 中它必须是函数

Vue.extend 返回的是一个“扩展实例构造器”,也就是预设了部分选项的Vue实例构造器。
经常服务于Vue.component用来生成组件,
可以简单理解为当在模板中遇到该组件名称作为标签的自定义元素时,
会自动调用“扩展实例构造器”来生产组件实例,并挂载到自定义元素上。

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue.extend 构造器的延伸</title>
    <script type="text/javascript" src="../assets/js/vue.js"></script>
</head>
<body>
    <h1>vue.extend 构造器的延伸</h1>
    <!--构造器的延伸:
        组件也是类似的写法
        所以一般建议以id形式写
    -->
    <blog></blog>
    <div id="blog"></div>

    <hr>
    <script type="text/javascript">
        var blogURL = Vue.extend({
    
            template:"<p><a :href='blogURL'>{
    {blogName}}</a></p>",//注意href前面还有个冒号 v-bind 指令被用来响应地更新 HTML 属性
            data:function(){
    
                return{
    
                    blogName:'Kacey的博客',
                    blogURL:"https://blog.csdn.net/DUT_Walnut"
                };
            }
        });
        
        //创建 blogURL 实例,并挂载到一个元素上。
        new blogURL().$mount("blog");//对应组件式写法
        new blogURL().$mount("#blog");//对应id式写法
    </script>
</body>
</html>

Vue.set

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = ‘hi’)

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法。
比如在vue构造器内部定义了一个count为1的数据,
我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue.set。

Vue.set存在意义

当你利用索引直接设置一个项时,vue不会为我们自动更新。
当你修改数组的长度时,vue不会为我们自动更新

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue.set 全局操作</title>
    <script type="text/javascript" src="../assets/js/vue.js"></script>
</head>
<body>
    <h1>Vue.set 全局操作</h1>
    <div id="test">
        <p>{
  {count}}</p>
        <br>
        <p>Vue.set用于数组</p>
        <br>
        <ul>
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值