美文网首页
vue-directive

vue-directive

作者: AoeKeller | 来源:发表于2018-10-25 21:17 被阅读0次

vue中有开放指令的api,可以给我们自定义一些指令。
看下面例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>directive</title>
    <script src="../asset/lib/vue.js"></script>
</head>
<body>
    <div id="app">
        <div id="num" v-jsppm="color">{{num}}</div>
        <button @click="add">add</button>
    </div>
</body>
<script>
    Vue.directive('jsppm', function (el, binding) {
        console.log(el);
        console.log(binding);
        el.style = 'color:' + binding.value;
    });
    var app = new Vue({
        el: '#app',
        data: {
            num: 1
        },
        methods: {
            add:function () {
                this.num ++;
            }
        }
    })
</script>
</html>

给id为num的div加了一个自定义的属性,然后用Vue.directive全局注册该指令,注册函数的参数如可参见日志

其中el是指的当前指令绑定的对象标签
binding对象中包含了指令相关信息

其中自定义指令的生命周期函数如下:

bind: function(el, binding) {   //刚绑定指令触发
    console.log('1-bind');
    console.log(binding)
    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');
}

可以运行如下代码打开控制台看一下效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>directive</title>
    <script src="../asset/lib/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-jsppm="color">{{num}}</div>
        <button @click="add">add</button>
    </div>
    <button onclick="unbind()">ubind</button>
</body>
<script>
    function unbind() {
        app.$destroy();
    }
    Vue.directive('jsppm', {
        bind: function(el, binding) {   //刚绑定指令触发
            console.log('1-bind');
            console.log(binding)
            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');
        },
    });
    var app = new Vue({
        el: '#app',
        data: {
            num: 1,
            color: 'red'
        },
        methods: {
            add:function () {
                this.num ++;
            }
        }
    })
</script>
</html>

vue.directive的详情见官网

相关文章

  • vue-directive

    vue中有开放指令的api,可以给我们自定义一些指令。看下面例子: 给id为num的div加了一个自定义的属性,然...

  • vue自定义指令directive

    关于vue自定义指令directive官方文档的解释如下:自定义指令Vue-directive的用法相信官网对于自...

  • vue-directive自定义指令

    基础概念 主要是官网内容,对指令的基本内容进行介绍 应用情景: 对dom元素进行操作时 分类: 全局指令 局部指令...

  • Vue-directive:指令给页面加水印

    导出时候PDF的时候需要加水印,在导出之前给页面加上水印

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

    1. 全局API的概念全局API并不在构造器里边,而是先声明全局变量或直接在vue上定义一些新的功能,vue内置了...

网友评论

      本文标题:vue-directive

      本文链接:https://www.haomeiwen.com/subject/jkxhtqtx.html