我有一个表填充vue
我想要显示行如果有数据,或者一行“没有结果”,如果没有数据。以下是jsfiddle中的基本视图:https://jsfiddle.net/ox0ozs5g/1/。vue.js条件呈现在表
为什么v-else
行即使在满足v-if
条件时仍继续显示?
我有一个表填充vue
我想要显示行如果有数据,或者一行“没有结果”,如果没有数据。以下是jsfiddle中的基本视图:https://jsfiddle.net/ox0ozs5g/1/。vue.js条件呈现在表
为什么v-else
行即使在满足v-if
条件时仍继续显示?
不幸的是v-if
和v-for
没有在一起工作。你可以移动v-if
一个水平,这样的:
<tbody v-if="my_tasks.length">
<tr id="retriever-task-{{ index }}" v-for="(index, task) in my_tasks" >
<td>{{ task.id }}</td>
<td>{{ task.type }}</td>
<td>{{ task.frequency }}</td>
<td>{{ task.status }}</td>
<td><i v-on:click="deleteTask(index, task.id)" class="fa fa-trash"></i></td>
</tr>
</tbody>
<tbody v-else>
<tr>
<td colspan="6">No tasks found.</td>
</tr>
</tbody>
您还可以使用pseudoelement template
:
<template v-if="my_tasks.length">
<tr id="retriever-task-{{ index }}" v-for="(index, task) in my_tasks" >
<td>{{ task.id }}</td>
<td>{{ task.type }}</td>
<td>{{ task.frequency }}</td>
<td>{{ task.status }}</td>
<td><i v-on:click="deleteTask(index, task.id)" class="fa fa-trash"></i></td>
</tr>
</template>
<template v-else>
<tr>
<td colspan="6">No tasks found.</td>
</tr>
</template>
从Vuejs文档“的V-其他元素必须紧跟在V-if或v-show元素 - 否则不会被识别。“ - https://vuejs.org/guide/conditional.html。它看起来像v-if之后的附加vue数据绑定属性正在打破它(例如v-for和v-on)。
您可以改用v-show。例如:
<tr v-show="!my_tasks.length">
<td colspan="6">No tasks found.</td>
</tr>
yariash是正确的关于v-if和v-for。你可以按照他的建议去做,或者只是把v-else改成v-if的倒数,即v-if =“!my_tasks.length”。
不,这与它无关。 “必须立即跟随”的表达是指同一级别的HTML元素。 Wahtever嵌入其中,在这种情况下无关紧要。正如yariiash在上面解释的那样,只有同一层上的'v-if'是问题所在。其他指令('v-on'等)将会很好。 –
谢谢。但是,使用v-show可以很好地与OP的示例结合使用。 – morecchia808