Vue让前端飞饥人谷技术博客

vue学习笔记10——Vue-directive 自定义指令

2017-07-26  本文已影响123人  椰果粒

1. 全局API的概念
全局API并不在构造器里边,而是先声明全局变量或直接在vue上定义一些新的功能,vue内置了一些全局API,比如Vue.directive。简单说是在构造器外部用Vue提供给我们的API函数来定义新的功能。以下是Vue的全局API

2. 复习一下构造器的概念

var app = new Vue({
    el : '#app',
    data : {
        count : 1
    }
})

这就是一个构造器,而全局API写在这种构造器的外面
3. Vue-directive 自定义指令:注册或获取全局指令

<div id="app">
    <div v-fjw="color">{{num}}</div>
    <button v-on:click="add">add</button>
    <button onclick="unbind()">解绑</button>
</div>

Vue.directive("fjw",function(el,binding){// 两个参数,自定义指令的名称,所对应的方法。方法中有三个参数,el,binding,vnode
    console.log(el);    // el代表当前绑定的元素
    console.log(binding);// binding是一个对象,有name,value,等属性    
    console.log(binding.name);// 自定义指令的名称
    console.log(binding.value);// 自定义指令对应的值,存在于data中
    el.style = "color:" + binding.value;
});
var app = new Vue({
    el : '#app',
    data : {
        num : 10,
        color : 'red'
    },
    methods : {
        add : function(){
            this.num++;
        }
    }
})

4. 自定义指令有5个声明周期(也叫钩子函数)

// 解绑
function unbind(){
    app.$destroy();
}
Vue.directive("fjw",{
    bind:function(el,binding){
        console.log('1-bind');
        el.style = "color:" + binding.value;
    },
    inserted:function(){
        console.log("2-inserted");
    },
    update:function(){
        console.log("3-update");
    },
    componentUpdated:function(){
        console.log("4-componentUpdated");
    },
    unbind:function(){
        console.log("5-unbind");
    }
})

5. 自定义指令和组件区别
自定义指令Vue.drective定义的是标签属性,组件定义的是标签

上一篇下一篇

猜你喜欢

热点阅读