Vue 自定义指令

by deniro

HTML

<div id="app">
    <input type="text" v-focus>
</div>

<div id="app2">
    <div v-deniro-directive:content.a.b="content"></div>
</div>

<div id="app3">
    <div v-deniro-directive2="{title:'物理学家新发现四起黑洞相撞事件',content:'物理学家探测到了它们向地球发来的引力波'}"></div>
</div>

Vue

Vue.directive('deniro-directive2', {
        bind: function (el, binding, vnode) {

            el.innerHTML =
                'title:' + binding.value.title + '<br>' +
                'content:' + binding.value.content + '<br>';
        }
    });
    var app3 = new Vue({
        el: '#app3',
        data: {
        }
    });

    Vue.directive('deniro-directive', {
        bind: function (el, binding, vnode) {
            var keys = [];
            for (var i in vnode) {
                keys.push(i);
            }

            el.innerHTML =
                'names:' + binding.name + '<br>' +
                'value:' + binding.value + '<br>' +
                'expression:' + binding.expression + '<br>' +
                'arg:' + binding.arg + '<br>' +
                'modifiers:' + JSON.stringify(binding.modifiers) + '<br>' +
                'vnode keys:' + keys.join(', ');
        }
    });
    var app2 = new Vue({
        el: '#app2',
        data: {
            content: '养生吃枸杞,选对的别选贵的!'
        }
    });


    //局部注册
    // var app = new Vue({
    //     el: '#app',
    //     directives: {
    //         focus: {
    //             //指令选项
    //         }
    //     }
    // });

    //全局注册
    Vue.directive('focus', {
        inserted: function (el) {
            el.focus();//聚焦
        }
    });

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