2、指令
最后更新于:2022-04-02 06:09:20
两个元素就会被添加到页面的DOM中。 ~~~html
strick
strick
freedom
~~~ **2)v-else** 该指令的功能和条件语句中的else类似,需要与v-if配合使用,并且要紧跟在v-if或v-else-if之后(如下所示),否则该指令将失效。 ~~~htmlstrick
freedom
~~~ **3)v-else-if** 该指令与v-else类似,也需要紧跟在v-if或v-else-if之后,但它能自定义条件表达式,如下所示。 ~~~htmlstrick
justify
freedom
~~~ **4)v-show** 该指令能根据表达式的计算结果显示或隐藏当前元素,如果得到的结果是一个假值,那么会为元素添加内联样式“display: none;”,如下所示。 ~~~htmlstrick
~~~ v-if会在切换过程中创建或销毁可能包含的数据绑定和子元素,并且只有在条件为真时,才会渲染该分支中的元素。而v-show无论条件的真假都会渲染元素,很适合频繁切换,并且要注意,v-show既不能作用于\元素,也无法与v-else配合。由前面的分析可知,v-if有更高的切换开销而v-show有更高的初始渲染开销。 ## 二、列表渲染 v-for是一个用于列表渲染的指令,它能接收数组、对象和整数,并且支持\元素。 **1)数组** 当基于数组来渲染一个列表时,v-for指令可迭代数组的元素和其索引。下面是一个示例,在第一组\- {{item}}
- {{index}} - {{item}}
- {{item}}
- {{item}}
- {{item}}
是\
{{age}}
中的插值(如下代码所示),那么仍然会调用update()函数,只是指令的新值和旧值都是“freedom”。 ~~~js vm.age = 30; ~~~ 当通过v-if指令销毁元素时(如下代码所示),就会调用unbind()函数,并输出“unbind”。 ~~~js vm.display = false; ~~~ 当bind()和update()触发的行为相同时,Vue允许将指令的定义对象声明成一个函数,如下所示。 ~~~js Vue.directive("func", function (el, binding) { console.log("function"); }); ~~~ **3)参数** 钩子函数可接收4个参数:el、binding、vnode和oldVnode,参数说明如下所列。注意,除了el之外,其它参数都是只读的。 (1)el:指令所绑定的元素。 (2)binding:一个对象,其属性如表3所列,举例参照的是自定义的v-hooks指令。 (3)vnode:Vue编译生成的虚拟节点。 (4)oldVnode:上一个虚拟节点,只存在于update()和componentUpdated()函数中。 :-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/44/93/4493570eb24d6cbafc2899feb174f173_1279x664.png) 表3 binding对象 自定义指令可接收任意合法的JavaScript表达式,包括对象,并且还支持动态参数,如下所示。 ~~~html
~~~ ***** > 原文出处: [博客园-Vue躬行记](https://www.cnblogs.com/strick/category/1512864.html) [知乎专栏-Vue躬行记](https://zhuanlan.zhihu.com/pwvue) 已建立一个微信前端交流群,如要进群,请先加微信号freedom20180706或扫描下面的二维码,请求中需注明“看云加群”,在通过请求后就会把你拉进来。还搜集整理了一套[面试资料](https://github.com/pwstrick/daily),欢迎浏览。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)