美文网首页Web
Vue-自定义指令(属性指令和元素指令)

Vue-自定义指令(属性指令和元素指令)

作者: 瑟闻风倾 | 来源:发表于2019-05-17 17:05 被阅读0次

1. 自定义指令属性指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="../vue1026.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" v-focus v-color="keyColor" placeholder="请输入名称关键字进行搜索" v-model="keyName">
    </div>
</body>
<script type="text/javascript">

    /*1.在Vue1.0中提供了一个接口Vue.directive(自定义指令名称,回调函数)来自定义属性指令。在定义属性指令名称时不需加v-前缀,但是在使用时需要加v-前缀。*/
    //eg1:自定义一个v-focus的指令(只有指令名称):实现当前使用v-focus指令的文本框自动获取焦点(未实现)
    Vue.directive("focus",function(){
        console.log("搜索框获取焦点");
        //(1)获取当前使用了v-focus指令的dom对象
        var inputObj = this.el;//this为当前自定义的指令对象
        console.log(inputObj);
        //(2)dom对象获取焦点
        inputObj.focus();
    });
    //eg2:自定义一个v-color的指令(不仅有指令名称还有表达式构成的指令):实现当前使用v-color指令的元素的文本颜色和data中定义好的颜色值一致
    Vue.directive("color",function(){
        //(1)获取当前使用了v-focus指令的dom对象
        var inputObj = this.el;//this为当前自定义的指令对象
        //(2)获取v-color="keyColor"中keyColor变量的值,并赋值给dom对象的文本颜色
        //说明:this.vm.keyColor虽能直接获取变量keyColor的值,但当data中变量名keyColor被修改指令函数中也需对应进行修改,且无法解决多处用到v-color指令且颜色值不同的情况
        //console.log(this.vm.keyColor);
        console.log(this.expression);//获取当前指令的值keyColor(keyColor是data中的一个变量名)
        inputObj.style.color = this.vm[this.expression];//vm为使用了当前指令的元素所在区域的调度者VM
    });
    //注意:自定义属性指令Vue.directive(自定义指令名称,回调函数)其实是Vue.directive(自定义指令名称,对象)的简略写法;
    //     自定义元素指令只能通过Vue.elementDirective(自定义指令名称,对象)来定义
    //eg3:自定义一个v-color的指令的简略写法
    /*Vue.directive("color",{
        bind:function(){
        this.el.style.color = this.vm[this.expression];
    }
    });*/

    var vm = new Vue({
        el:"#app",
        data:{
            keyName:"",
            keyColor:"blue"
        }
    });
</script>
</html>

2. 自定义元素(标签)指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <my-green>搜索条件:</my-green><input type="text" placeholder="请输入名称关键字进行搜索" v-model="keyName">
    </div>
</body>
<script type="text/javascript">

    /*2.在Vue1.0中提供了一个接口Vue.elementDirective(自定义指令名称,对象)来自定义元素(标签)指令。在定义元素指令名称时可以加v-前缀,使用时和名称保持一致。*/
    //eg1:定义一个元素指令my-green:实现被元素包裹的内容文字颜色为绿色
    Vue.elementDirective("my-green",{
        bind:function(){
            this.el.style.color = "green";
        }
    })
    

    var vm = new Vue({
        el:"#app",
        data:{      
            keyName:""
        }
    });
</script>
</html>

相关文章

  • Vue-自定义指令(属性指令和元素指令)

    1. 自定义指令属性指令 2. 自定义元素(标签)指令

  • angular自定义指令相关知识及代码

    大纲 1、自定义指令之——属性指令2、自定义属性指令的运行原理3、自定义属性指令代码实践4、自定义结构指令5、自定...

  • angular4 学习第二天(内置指令)

    一、angular 内置指令学习(一) 属性型指令属性型指令会监听和修改其它HTML元素或组件的行为、元素属性(A...

  • 指令

    分类 组件:带有模版的指令 属性型指令:更改元素、组件或其他指令的外观或行为的指令。 结构型指令:通过添加和删除 ...

  • vue

    v-html指令: 指令的概念: 指令是vue自定义的以v-开头的自定义属性。每个不同的属性都有各自不同的意义和功...

  • AngularJS 笔记

    自定义指令 scope 的属性参数 & 自定义指令中的 Link 属性 jQLite 对象 AngularJS 中...

  • vue2.0基础(二、全局API)

    一、自定义指令 自定义指令中传递的三个参数 el: 指令所绑定的元素,可以用来直接操作DOM。 binding: ...

  • Angular 指令,管道,服务

    1. 指令 Directive 指令是 Angular 提供的操作 DOM 的途径。指令分为属性指令和结构指令...

  • Angular自定义指令

    我们知道angular指令分为结构型和属性型2种,今天就来研究一下自定义属性型指令。 上面我们定义了一个指令,如何...

  • Angular之自定义指令

    1.自定义指令这里我们说的指令可以理解为 属性型指令,主要是用来控制组件的外观的。 2.自定义指令的生成 3.目录...

网友评论

    本文标题:Vue-自定义指令(属性指令和元素指令)

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