美文网首页
vue键盘监听和指令定义

vue键盘监听和指令定义

作者: 2764906e4d3d | 来源:发表于2018-12-19 19:53 被阅读0次

监听键盘事件

  1. keyup按键弹起时执行事件 .enter 就是绑定enter键,在文本框中回车执行add方法
<input type="text" class="form-control" v-model="name" @keyup.enter="add">
  1. 按键修饰符,全部按键别名:
    .enter
    .tab
    .delete
    .esc
    .space
    .up
    .down
    .left
    .right
  2. 其他按键可以通过键盘码操控(键盘码为可查询固定值),绑定f2按键
<input type="text" class="form-control" v-model="name" @keyup.113="add">
  1. 自定义全局按键修饰符,绑定f2按键
<input type="text" class="form-control" v-model="name" @keyup.f2="add">
Vue.config.keyCodes.f2=113;

自定义指令

  1. Vue中所有指令在调用的时候都以v- 开头
  2. 自定义指令 使用Vue.directive()定义全局指令 参数1:指令的名称(注意:在定义的时候,指令的名称之前不需要加v- 前缀)参数2:是一个对象(这个对象上有一些指令相关的函数)

钩子函数

  • bind:function(){},//当指令绑定到元素上的时候,会立即执行这个bind函数,只执行一次
  • inserted:function(){},//表示元素插入到DOM中的时候,会执行inserted函数,只触发一次
  • updated:function(){}//当VNode更新的时候会执行update,可能会触发多次

  1. 在每个函数中第一个参数永远是el,表示被绑定了指令的元素,el是一对象个原生的js
  2. 自定义一个v-focus指令为文本框获取焦点
<input type="text" v-model="keywords" class="form-control" v-focus>
  1. 元素刚绑定指令的时候,还没有插入到DOM中去,此时调用focus方法没有作用(此时不会有样式效果)
Vue.directive('focus',{
                bind:function(el){
                    el.foucus()
                },/
            })
  1. 一个元素只有插入DOM后才能获取焦点
Vue.directive('focus',{
                inserted:function(el){
                    el.focus()
                },
            })
光标聚集
  1. 自定义一个文本框中输入字体颜色的指令
<input type="text" v-model="keywords" class="form-control" v-focus v-color>
            Vue.directive('color',{
                    bind:function(el){
                    el.style.color='red'
                }
输入字体颜色更改
  1. 和js有关的操作最好在inserted中执行,放置js行为不生效;和样式有关的操作一般可以在bind中执行

钩子函数的属性

  1. el:指令所绑定的元素,可以用来直接操作DOM
  2. binding:一个对象包含以下属性
    • name 获取指令的名字
    • value 指令的绑定值
    • oldValue 指令绑定的前一个值
    • expression 绑定值的字符串形式
    • arg 传给指令的参数
    • modifiers
      3.vnode vue生成的虚拟节点
  3. oldVnode 上一个虚拟节点
  4. 让自定义的v-color能够自定义颜色
<input type="text" v-model="keywords" class="form-control" v-focus v-color="'green'">
Vue.directive('color',{ 
                bind:function(el,binding){
                    el.style.color=binding.value
                }
                
            })

定义私有指令

  1. 自定义一个改变字体粗细的指令
directives:{
                    'fontweight':{
                        bind:function(el,binding){
                            el.style.fontWeight=binding.value
                        }
                    }
                }
  1. 函数简写,大多数情况下想在bind和updated钩子上做重复动作,可以
<div  v-fontsize="'70px'">{{date|dataFormat('')}}</div>
directives:{
            'fontsize':function(el,binding){//这个function等同于把代码写到bind和updated中
              el.style.fontSize=parseInt(binding.value)+'px'
                }
        }

  • 字符串方法padStart,ES6中的字符串新方法String.prototype.padStart(maxlength,fillString=’’),或者String.prototype.padEnd(maxlength,fillString=’’)来填充字符
  • 例如可以让时间时分秒不是两位数时自动填充0,
                            var hh=dt.getHours().toString().padStart(2,'0')
                            var mm=dt.getMinutes().toString().padStart(2,'0')
                            var ss=dt.getSeconds().toString().padStart(2,'0')

相关文章

网友评论

      本文标题:vue键盘监听和指令定义

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