如果我这样做:
<ul>
<li v-for="value in testData">
<span v-if="Array.isArray(value)" v-for="morevalue in value"> {{ morevalue }}</span>
<span v-else> {{ value }} </span>
</li>
</ul>
v-else中的跨度也将在第二个V-FOR上循环,即使它没有任何v-for,为什么?
这是Vue实例:
new Vue({
el: '#exercise',
data: {
testData: {
name: 'TESTOBJECT',
id: 10,
data: [1.67, 1.33, 0.98, 2.21]
}
}
});
答案 0 :(得分:2)
v-for
的优先级高于v-if
,(即)v-if
将针对每个循环执行。如果您想基于v-for
跳过v-if
的执行。我建议在这种情况下嵌套循环。
<ul>
<li v-for="value in testData">
<template v-if="Array.isArray(value)">
<span v-for="morevalue in value"> {{ morevalue }} ></span>
</template>
<span v-else> {{ value }} </span>
</li>
</ul>
答案 1 :(得分:1)
您可以尝试这样的事情吗?
<div v-if="!!arr?.length">
<ul>
<li v-for="value in arr">
// ...
</li>
</ul>
</div>