vue 内置、自定义指令

常用指令

v-bind:xxx  

v-bind : 单向绑定解析表达式, 可简写为 :xxx  数据只能从data流向页面。

v-model :xxx

v-model :  双向绑定是vue的一个核心功能,v-model:value 可简写为 v-model   

实现mvvm主要包含两个方面,数据变化更新视图,视图变化更新数据(不仅能从data流向页面,还可以从页面流向data。):

 关于Vue的双向绑定,核心是Object.defineProperty()方法

vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。简单点来说,就是通过此方法来定义一个值,调用、使用到了get方法,赋值,使用到了set方法

语法:Object.defineProperty(obj,prop,descriptor)

  • obj——要在其上定义属性的对象。
  • prop——要定义或修改的属性的名称。
  • descriptor——将被定义或修改的属性描述符。

v-on:xxx

v-on : 绑定事件监听, 可简写为@

v-for :xxx

v-for : 遍历数组/对象/字符串 

<template v-if="shouldShowItem">
	<div v-for="item in itemList"></div>
</template>

 v-if :xxx

v-if : 条件渲染(动态控制节点是否存在)

【v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断”】

适用于:切换频率较低的场景

特点:不展示的DOM元素直接被移除

v-else :xxx

v-else : 条件渲染(动态控制节点是否存存在)

v-show :xxx

v-show : 条件渲染 (动态控制节点是否展示)

适用于:切换频率较高的场景

特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉

v-for和v-if的优先级:

 (v-for的优先级比v-if高) 

 如果两者同时使用,那么v-if会在每一个v-for循环渲染出来的项上作用(每次循环就会执行一次判断),造成性能上的浪费。
解决方法:将v-if放到循环列表元素的父元素中或使用template将v-for渲染的元素包起来,再template上使用v-if。

v-if 和v-show本质区别 :

(1)v-show本质就是为该元素添加css--display:none,dom元素依旧还在,控制隐藏
(2)v-if是将dom元素整个添加或删除

内置指令

v-text指令:

1.作用:向其所在的节点中渲染文本内容。

2.与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会

v-html指令:

1.作用:向指定节点中渲染包含html结构的内容。

2.与插值语法的区别:

 (1).v-html会替换掉节点中所有的内容,{{xx}}则不会

 (2).v-html可以识别html结构。

 3.严重注意:v-html有安全性问题!!!!

 (1).在网站上动态渲染任意HTML是非常危险的,容易导致XSS攻击。

 (2).一定要在可信的内容上使用v-html,永不要用在用户提交的内容上!

v-cloak指令(没有值):

1.本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性。

 2.使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题。

v-once指令:

 1.v-once所在节点在初次动态渲染后,就视为静态内容了。

  2.以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。

 v-pre指令:

 1.跳过其所在节点的编译过程。

 2.可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译。

自定义指令

定义语法

 (1).局部指令

 new Vue({                                                          

new Vue({

   directives:{指令名:配置对象}   或           directives{指令名:回调函数}

   })                                                                      })

 (2).全局指令

 Vue.directive(指令名,配置对象) 或   Vue.directive(指令名,回调函数)

配置对象中常用的3个回调

 (1).bind:指令与元素成功绑定时调用。

 (2).inserted:指令所在元素被插入页面时调用。

 (3).update:指令所在模板结构被重新解析时调用。

备注

 1.指令定义时不加v-,但使用时要加v-;

 2.指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名。

 eg:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。

 eg:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值