1

如果我这样做:

<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]
        }
    }
});
4

2 回答 2

3

v-for的优先级高于v-if, (ie)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>
于 2018-03-08T02:52:10.803 回答
1

你可以尝试这样的事情:

<div v-if="!!arr?.length">
  <ul>
    <li v-for="value in arr">

      // ...

    </li>
  </ul>
</div>
于 2020-07-28T19:31:34.383 回答