vue_15 自定义全局指令

使用vue自定义全局指令,在加载页面的时候自动让光标聚焦到输入框

使用Vue.directive() 定义全局的指令,
语法:
Vue.directive("focus",对象) 这样定义的是全局的,如果需要定义私有的,就在vue实例中,添加directives字段
自定义的命令也是可以传参的.不过获取的形参是一个对象,需要使用.value拿到你传的值,你也可以打印形参查看数据的结构
参数:focus就是你定义的指令名,不过在调用的时候需要在前面加上 v-
所有vue的指令都是 v- 开头的
参数:对象 这个对象里面包含有与你定义的指令相关的函数,常用的bind , inserted ,updated

vue指令函数也可以缩写.使用缩写的时候, 相当于函数应用在了bind和update里面
形式如:
directives:{
"focus1":function(el){}
}
// bind和update会同时绑定这个这个函数,如果需求两个绑定不一样,就不能这么写了

代码示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../util/vue-2.4.0.js"></script>
</head>
<body>
<div id="test">
    <input type="text" v-focu="[100,200]"/><br/>

</div>

<div id="test1">
    <input type="text" v-focus1="100"/>
</div>
<script>
    Vue.directive("focu",{
        // 注:在每个函数中,第一个参数永远是el,表示被绑定了指令的那个元素,这是el参数是一个原生js对象
        bind: function (el) { //每当指令绑定到元素上的时候会立即执行这个bind函数,只执行一次
            // 在元素刚绑定了指令的时候,还没有插入到DOM中去,这时候,调用focus方法没有作用
            el.focus();
        },
        inserted: function (el,data) {//当元素插入到DOM中的时候,会执行inserted函数
            el.focus();
            console.log(data.value[0],data.value[1])
        },
        updated: function (el) { // 当组件更新的时候,会执行updated ,可能会执行多次

        }
    });
    var vm1 = new Vue({
        el:"#test"

    });
    var vm2 = new  Vue({
        el:"#test1",
        directives:{
            "focus1":{
                inserted: function (el, arg1) {
                    console.log(arg1.value)
                }
            }
        }
    })
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容