vue中v-if优先级大于v-for因此在v-if中不可出现v-for中定义的属性,否则会出现报错,提示属性被使用但未定义。
例如:下文代码会报错: Property “key” was accessed during render but is not at
<div v-for="(value,key,index) in obj" v-if=" key!=123" : key=index>
{{value}}:{{key}}:{{index}}
</div>
修正后的代码如下
<template v-for="(value,key,index) in obj" :key="index">
<div v-if="key != 123">
{{value}}:{{key}}:{{index}}
</div>
</template>
使用template的原因只是单纯的为了占位,因为如果写成div的话,为了避免v-if优先级产生问题,我们已经多写了一个div,导致每一层都会有一个无用的div,写成template就会少一个div,就没有多余div了