2016-07-27 87 views

回答

7

不幸的是v-ifv-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> 
1

從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> 
+0

不,這與它無關。 「必須立即跟隨」的表達是指同一級別的HTML元素。 Wahtever嵌入其中,在這種情況下無關緊要。正如yariiash在上面解釋的那樣,只有同一層上的'v-if'是問題所在。其他指令('v-on'等)將會很好。 –

+0

謝謝。但是,使用v-show可以很好地與OP的示例結合使用。 – morecchia808

0

yariash是正確的關於v-if和v-for。你可以按照他的建議去做,或者只是把v-else改成v-if的倒數,即v-if =「!my_tasks.length」。