Vue.js学习笔记(5)

© fengyu学习

再谈 v-if

条件渲染还有哪些被错过的细节

v-ifv-elsetemplatev-show

1、v-if 与 template

template 这个家伙终于登场了,不过这一次,他仍然是一个配角!

那么在 v-if 主角光环笼罩的今天,template 来凑个什么热闹呢?

一言不合就亮定义,各位看官,请看:

  • template 的作用:将 指令作用域,拓展到多个元素身上

通过之前的学习,大家应该都知道v-if指令是放在一个DOM节点上的

比如:

show为true时显示

如果这个时候,我们有若干个和 div1 同级的节点也需要靠 v-if 指令进行显隐控制,那大家会选择怎么办呢?

会是这样么:

show为true时显示1
show为true时显示2

这要有 10000 个,不得多写多少个 v-if 啊!

有些小伙伴说,那我可不可以这样呢:

show为true时显示1
show为true时显示2

多加一个 wrap 元素,把判断一致的子 div,包裹起来。不得不说,这样比第一种好得多,但他还不是最好的方式!

那么究竟是什么法宝,居然如此神奇,可以让我们更简单实现这个功能呢?

那就是:template


为什么说这种方式更好呢,因为他不用增加额外的 DOM节点

第二种方法比他差就差在这一点上,别看一个 DOM节点 掀不起什么波澜,如此的善小,还是为之更好!

PS:

  • template 元素不能是绑定 vue 实例的root元素,如果你不小心犯了这个错误,你会和我一样看到下面这条警告:[Vue warn]: Attribute "id" is ignored on component