2016-07-27 26 views

答えて

7

残念ながらv-ifv-forは連携していません。 V-他の要素は、直ちにV-IFまたはに従う必要があります」Vuejsドキュメントから

<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

<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を使用することができます。このようにあなたは、v-if 1レベル移動することができます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は内部に入れ子になっていますが、その文脈では関係ありません。上記で説明したように、同じレベルの 'v-if'だけが問題です。他のディレクティブ( 'v-on'など)でも問題ありません。 –

+0

ありがとうございます。ただし、v-showを使用すると、OPの例でうまく動作します。 – morecchia808

0

y-ifはv-ifとv-forについてです。彼が示唆したように、またはv-elseをv-ifの逆に、つまりv-if = "!my_tasks.length"に変更できます。

関連する問題