vue中有哪些自定义指令

  介绍

这篇文章主要介绍”vue中有哪些自定义指令”,在日常操作中,相信很多人在vue中有哪些自定义指令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“vue中有哪些自定义指令”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

 vue中有哪些自定义指令

<强>四个实用的vue自定义指令

<强> 1, <强> <代码> v-drag

需求:鼠标拖动元素

思路:

<李>

元素偏移量=鼠标滑动后的坐标——鼠标初始点击元素时的坐标+初始点击时元素距离可视区域的,离开了。

<李>

将可视区域作为边界,限制在可视区域里面拖拽。

代码:

Vue.directive(& # 39;拖# 39;,,{   插入才能(el), {   ,,,let  header =, el.querySelector (& # 39; .dialog_header& # 39;)   ,,,header.style.cssText  +=, & # 39;;游标:移动;& # 39;   ,,,header.onmousedown =, function  (e), {   ,,,,,//获取当前可视区域宽,高   ,,,,,let  clientWidth =document.documentElement.clientWidth   ,,,,,let  clientHeight =document.documentElement.clientHeight      ,,,,,//获取自身宽高   ,,,,,let  elWidth =, el.getBoundingClientRect .width ()   ,,,,,let  elHeight =, el.getBoundingClientRect .height ()      ,,,,,//获取当前距离可视区域的,离开了   ,,,,,let  elTop =, el.getBoundingClientRect直()上   ,,,,,let  elLeft =, el.getBoundingClientRect .left ()      ,,,,,//获取点击时候的坐标   ,,,,,let  startX =e.pageX   ,,,,,let  startY =e.pageY      ,,,,,document.onmousemove =, function  (e), {   ,,,,,,,//元素偏移量,=,鼠标滑动后的坐标,安康;鼠标初始点击元素时的坐标,+,初始点击时元素距离可视区域的,离开了   ,,,,,,,let  moveX =, e.pageX 作用;startX  + elLeft   ,,,,,,,let  moveY =, e.pageY 作用;startY  + elTop      ,,,,,,,//将可视区域作为边界,限制在可视区域里面拖拽   ,,,,,,,if ((时间+ moveX  elWidth),祝辞,clientWidth  | |, moveX  & lt;, 0, | |,(时间+ moveY  elHeight),祝辞,clientHeight  | |, moveY  & lt;, 0), {   ,,,,,,,,,回来   ,,,,,,,}      ,,,,,,,el.style.cssText  +=, & # 39;: & # 39;, +, moveY  +, & # 39; px;左:& # 39;,+,moveX  +, & # 39; px; & # 39;   ,,,,,}   ,,,,,document.onmouseup =, function  (), {   ,,,,,,,document.onmousemove =零   ,,,,,,,document.onmouseup =零   ,,,,,}   ,,,}   ,,}   })

<强> 2, <强> <代码> v-wordlimit

需求:后台字段限制了长度,并且区分中英文,中文两个字节,英文一个字节,所以输入框需要限制输入的字数并且区分字节数,且需回显已输入的字数。

思路:

<李>

一个字节的正则/[\ x00 - \ xff]/g

<李>

创建包裹字数限制的元素,并定位布局在文本区域和输入框上

<李>

分别计算输入的字符一个字节的有enLen个,两个字节的有cnLen个;用来后面字符串截断处理

<李>

当输入的字数超过限定的字数,截断处理,substr (0, enLen + cnLen)

<李>

接口更新了输入框的值,或者初始化输入框的值,需要回显正确的字节数

代码:

Vue.directive (& # 39; wordlimit& # 39;, {   绑定绑定才能(el) {   ,,,console.log(& # 39;结合# 39;);   ,,,let  {, value },=,绑定   ,,,Vue.nextTick((),=在{   ,,,,,//找到输入框是textarea框还是输入框   ,,,,,let  current =0   ,,,,,let  arr =, Array.prototype.slice.call (el.children)   ,,,,,for  (let 小姐:=,0;,小姐:& lt;, arr.length;,我+ +),{   ,,,,,,,如果(arr[我].tagName==& # 39;文本区域# 39;,| |,arr[我].tagName==& # 39;输入# 39;){   ,,,,,,,,,current =我   ,,,,,,,}   ,,,,,}   ,,   ,,,,,//更新当前输入框的字节数   ,,,,,el.children [el.children.length-1] .innerHTML =, el.children[现在].value.replace (/[^ \ x00 - \ xff]/g, & # 39; * * & # 39;) .length  + & # 39;/& # 39; +//eslint-disable-line价值   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

vue中有哪些自定义指令