我有这个代码设置
<div v-for="person in persons">
<div v-if="person.status == 'public'" :key="person.id">
Hi,my name is {{person.name}}
</div>
<div v-else :key="person.id">
This person is private
</div>
</div>
person
对象中status
属性的所有值都是'public',all!
但是在上面的代码片段中,不是要运行的if
块,而是else
块继续运行。
如果我像这样重写代码:
<div v-for="person in persons" :key="person.id">
<div v-if="person.status == 'public'">
Hi,my name is {{person.name}}
</div>
<div v-else>
This person is private
</div>
</div>
那么它就能正常工作。
第一个片段有什么问题?
看起来“key”属性在这方面有一定的作用。我用错了吗?为什么会影响输出?
在for循环中写if语句的最正确方法是什么?
我以前在代码中的其他循环中一直使用第一个方法,直到今天才出现问题。我是否需要更新所有这些方法,使其看起来像第二种方法,以避免像这样的奇怪行为?
1条答案
按热度按时间f4t66c6m1#
vue v-for v-if
当它们存在于同一节点上时,v-if具有比v-for更高的优先级。这意味着v-if条件将不能访问v-for作用域中的变量
您正确地将
v-for
与v-if
一起使用。问题是:key
被放在条件块上。无论哪种方式,都会在div中呈现一些内容,您有两种可能的结果,并且键应该与
v-for
在一行上。不应有条件地呈现:key
属性。