react & vue & angularvue

Vue中的内置指令与自定义指令

2022-07-10  本文已影响0人  你怀中的猫

一、内置指令

二、自定义指令

new Vue({                               
     directives:{指令名:配置对象}    
})

new Vue({
    directives{指令名:回调两数}
 })   

(2).全局指令:

Vue.directive(指令名,配置对象)

Vue.directive(指令名回调两数)
<div id="root">
        <h1>正常值 : <span v-text="num"></span></h1>
        <h1>放大10倍 : <span v-big="num"></span></h1>
        <button @click="num++">点我num+1</button>
        <hr />
        <input type="text" v-bind:value="num" />
        <input type="text" v-fbind:value="num" />
    </div>
<script>
    Vue.config.productionTip = false; //阻止vue在启动时生成生产提示

    // 全局指令
    Vue.directive("fbind", {
        // 指令与元素成功绑定时
        bind(element, binding) {
            console.log("bind");
            element.value = binding.value;
        },
        // 指令所在元素插入页面时
        inserted(element, binding) {
            console.log("inserted");
            element.focus();
        },
        // 指令所在模板被重新解析时
        update(element, binding) {
            console.log("ipdate");
            element.value = binding.value;
        },
    });

    //创建Vue实例
    const vm = new Vue({
        //ViewModel
        el: "#root",
        data: {
            num: 1,
        },
        methods: {},
        directives: {
            // big何时会被调用? 1、指令与元素成功绑定时;2、指令所在的模板被重新解析时
            big(element, binding) {
                element.innerText = binding.value * 10;
                console.log(element, binding.value, this);
                // !!!注意  此处的this指向 window
            },

             fbind:{
                 // 指令与元素成功绑定时
                 bind(element,binding){
                     console.log('bind');
                     element.value = binding.value;
                 },
                 // 指令所在元素插入页面时
                 inserted(element,binding){
                     console.log('inserted');
                     element.focus();
                 },
                 // 指令所在模板被重新解析时
                 update(element,binding){
                     console.log('ipdate');
                     element.value = binding.value;
                 }
             }
        },
    });

    // console.log(vm);
</script>

上一篇下一篇

猜你喜欢

热点阅读