在很多场景中都需要v-for循环再使用v-if条件判断渲染出需要的视图,但是在大量数据渲染是这种方法会在渲染视图中出现<!---->
这种注释代替不显示的元素。如果条件很多,渲染出来的<!---->
会占据大量的空间。以下是一个去掉<!---->
的方法:
<template v-for="(item,key) in list" >
<template v-if="item.type=='text'" >
<div>text</div>
</template>
<template v-else-if="item.type=='textarea'" >
<div>textarea</div>
</template>
<template v-else>
<div>number</div>
</template>
</template>
复制代码
注意:使用v-else-if,就是隐藏<!---->
的关键,记得要v-else结尾,不然还是会多出一个<!---->
。else-if存在一些限制,如果保证渲染出的效果跟自己的需求吻合,最好是保持一个判断条件,使用computed或者methods等方法都可以。
<template v-for="(item,key) in list" >
<template v-if="item.num>0" >
<div>text</div>
</template>
<template v-else-if="item.num>0&&item.type=='textarea'" >
<div>textarea</div>
</template>
</template>
以上代码无法渲染出想要的视图,正确如下:
<template v-for="(item,key) in list" >
<template v-if="item.num>0" >
<div>text</div>
</template>
<template v-else-if="item.num>1" >
<div>textarea</div>
</template>
</template>
复制代码