vuejs 每 25 或 50 条记录重复一个图例行 table
vuejs repeat a legend row to table every 25 or 50 records
我已经有 VueJS v-for
工作正常:
<tr v-for="request in requests">
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
现在我需要添加一个 legend/guiding 行,比如每 25 或 50 条记录,如下所示:
<span v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 25 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</span>
令我惊讶的是,不仅 v-if
部分不起作用,而且我还返回了一个错误:"ReferenceError: request is not defined"(即使我离开了 v-if
指令,甚至删除了额外的 <tr>
完全),所以 VueJS 正在考虑 DOM 结构,也许我还不明白。
无论哪种方式,我该怎么做?
顺便说一句,有没有纯粹的 HTML/CSS 方法来做到这一点?
您的代码无效 HTML。你不能让 span
s 换行 tr
s.
通常无效的 HTML 没什么大不了的,但是浏览器在处理无效的 tr
/td
s 放置时非常错误(规范不清楚是什么他们应该在出错的情况下做,所以他们以特定的方式针对特定的 cases/errors).
正确的做法is to use <template>
s, aka "Conditional Groups":
<table>
<template v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 25 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</template>
重现您的错误的演示:
new Vue({
el: '#app',
data: {
requests: [{name: 'a1'},{name: 'a2'},{name: 'a3'},{name: 'a4'},{name: 'a5'},{name: 'a6'},{name: 'a7'},{name: 'a8'}]
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table border="1">
<span v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 3 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</span>
</table>
</div>
修复后的演示:
new Vue({
el: '#app',
data: {
requests: [{name: 'a1'},{name: 'a2'},{name: 'a3'},{name: 'a4'},{name: 'a5'},{name: 'a6'},{name: 'a7'},{name: 'a8'}]
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table border="1">
<template v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 3 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</template>
</table>
</div>
我已经有 VueJS v-for
工作正常:
<tr v-for="request in requests">
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
现在我需要添加一个 legend/guiding 行,比如每 25 或 50 条记录,如下所示:
<span v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 25 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</span>
令我惊讶的是,不仅 v-if
部分不起作用,而且我还返回了一个错误:"ReferenceError: request is not defined"(即使我离开了 v-if
指令,甚至删除了额外的 <tr>
完全),所以 VueJS 正在考虑 DOM 结构,也许我还不明白。
无论哪种方式,我该怎么做?
顺便说一句,有没有纯粹的 HTML/CSS 方法来做到这一点?
您的代码无效 HTML。你不能让 span
s 换行 tr
s.
通常无效的 HTML 没什么大不了的,但是浏览器在处理无效的 tr
/td
s 放置时非常错误(规范不清楚是什么他们应该在出错的情况下做,所以他们以特定的方式针对特定的 cases/errors).
正确的做法is to use <template>
s, aka "Conditional Groups":
<table>
<template v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 25 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</template>
重现您的错误的演示:
new Vue({
el: '#app',
data: {
requests: [{name: 'a1'},{name: 'a2'},{name: 'a3'},{name: 'a4'},{name: 'a5'},{name: 'a6'},{name: 'a7'},{name: 'a8'}]
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table border="1">
<span v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 3 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</span>
</table>
</div>
修复后的演示:
new Vue({
el: '#app',
data: {
requests: [{name: 'a1'},{name: 'a2'},{name: 'a3'},{name: 'a4'},{name: 'a5'},{name: 'a6'},{name: 'a7'},{name: 'a8'}]
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table border="1">
<template v-for="(request, index) in requests">
<tr>
<td>{{request.name}}</td>
<td> .. etc .. </td>
</tr>
<tr v-if="index % 3 == 0">
<th>Name</th>
<th> .. etc .. </th>
</tr>
</template>
</table>
</div>