zoukankan      html  css  js  c++  java
  • vue自定义指令

    一、通过  Vue.directive()  定义全局指令

    <body>
        <div id="aa">
            <input type="text" id="search" val="" v-focus>
            <p v-fontWeight="800" v-color=" 'green' "> {{msg}} </p>
        </div>
    </body>
    
    
    <script>
    
        // 使用  Vue.directive() 定义全局的指令  v-focus
        // 其中:参数1 : 指令的名称,注意,在定义的时候,指令的名称前面,不需要加 v- 前缀, 
        // 但是: 在调用的时候,必须 在指令名称前 加上 v- 前缀来进行调用
        //  参数2: 是一个对象,这个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作
        Vue.directive('focus', {
            bind: function (el) {  // 每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
                // 注意: 在每个 函数中,第一个参数,永远是 el ,表示 被绑定了指令的那个元素,这个 el 参数,是一个原生的JS对象
                // 在元素 刚绑定了指令的时候,还没有 插入到 DOM中去,这时候,调用 focus 方法没有作用
                //  因为,一个元素,只有插入DOM之后,才能获取焦点
                // el.focus()
            },
            inserted: function (el) {  // inserted 表示元素 插入到DOM中的时候,会执行 inserted 函数【触发1次】
    
                el.focus()
                // 和JS行为有关的操作,最好在 inserted 中去执行,放置 JS行为不生效
            },
            updated: function (el) {  // 当VNode更新的时候,会执行 updated, 可能会触发多次
    
            }
    
        })
        // 自定义一个 设置字体颜色的 全局指令
        Vue.directive('color', {
            // 样式,只要通过指令绑定给了元素,不管这个元素有没有被插入到页面中去,这个元素肯定有了一个内联的样式
            // 将来元素肯定会显示到页面中,这时候,浏览器的渲染引擎必然会解析样式,应用给这个元素
            bind: function (el, binding) {
                // el.style.color = 'red'
                // console.log(binding.name)
                // 和样式相关的操作,一般都可以在 bind 执行
    
                // console.log(binding.value)
                // console.log(binding.expression)
    
                el.style.color = binding.value
            }
        })
    
    
        //创建一个Vue指令
        var vm = new Vue({
            el: "#aa",
            data: {
                msg:'你好,世界!'
            },
            methods: {
    
            }
        })
    
    </script>

    二、Vue定义私有指令

    <body>
        <div id="aa">
            <p v-fontsize=" '30px' "  v-fontWeight="800" v-color=" 'green' "> {{msg}} </p>
        </div>
    </body>
    
    <script>
        //创建一个Vue指令
        var vm = new Vue({
            el: "#aa",
            data: {
                msg:'你好,世界!'
            },
            methods: {
    
            },
            //定义私有的过滤器
            filters:{
    
            },
            directives: { // 自定义私有指令
            'fontweight': { // 设置字体粗细的
              bind: function (el, binding) {
                el.style.fontWeight = binding.value
              }
            },
        //自定义指令的简写方式
    'fontsize': function (el, binding) { // 注意:这个 function 等同于 把 代码写到了 bind 和 update 中去 el.style.fontSize = parseInt(binding.value) + 'px' } } }) </script>
  • 相关阅读:
    Object的原型拷贝-create、assign、getPrototypeOf 方法的结合
    配intelliJ IDEA 过程
    浅谈HTTP中Get与Post的区别
    apply、call、bind区别、用法
    引用类型与原始类型的区别
    html5标签集结1
    指针作为参数传递
    指针与指针变量
    函数模板
    内置函数
  • 原文地址:https://www.cnblogs.com/starwei/p/12615047.html
Copyright © 2011-2022 走看看