【发布时间】:2017-11-16 14:51:17
【问题描述】:
我有一个使用 ajax 获取数据的表。我正在尝试创建一个表格,其中每一行都有一个关联的隐藏行,单击该行会切换隐藏行的显示。隐藏行包含一个手风琴。
问题是手风琴变得一团糟并显示在表格的底部,而不是显示在它被点击的特定行的下方。
我的代码如下:
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th v-for="column in columns">
<span v-if="column == 'Predictive Price'">
{{column}}
<i class="fa fa-info-circle" v-tooltip="msg"></i>
</span>
<span v-else-if="column == 'Actual Price'">
{{column}}
<i class="fa fa-info-circle" v-tooltip="tooltip.actual_price"></i>
</span>
<span v-else>
{{column}}
</span>
</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr v-for="row in model" @click="showRow">
<td>
{{row.id}}
</td>
<td>
{{row.company_customer.customer_name}}
</td>
<td>
<i class="fa fa-map-marker"></i>
<small>
{{row.pickup_addr.address_1}}, {{row.pickup_addr.city}}, {{row.pickup_addr.postcode}}
</small>
</td>
<td>
<i class="fa fa-map-marker"></i>
<small>
{{row.pickup_addr.address_1}}, {{row.pickup_addr.city}}, {{row.pickup_addr.postcode}}
</small>
</td>
<td>
£{{row.predictive_price}}
</td>
<td>
£{{row.actual_price}}
</td>
<td>
n/a
</td>
<tr>
<td colspan="7" v-if="contentVisible">
<div class="accordian-body">
ACCORDION
</div>
</td>
</tr>
</tr>
</tbody>
</table>
<script>
export default {
methods: {
data() {
return {
msg: 'This is just an estimation!',
tooltip: {
actual_price: 'Click on the price to edit it.'
},
contentVisible: false,
}
},
rowRow() {
this.contentVisible = !this.contentVisible;
}
}
}
</script>
我可以在哪里放置手风琴 div 以使其正确显示?
编辑:
【问题讨论】:
-
你把你的手风琴
tr放在另一个tr里面。放在后面。tr不能是另一个tr的子代。 -
@RoyJ 请看这个小提琴:如你所见,它没有达到我需要它做的效果:jsfiddle.net/49gptnad/355 甚至把它放在
tr之外 -
手风琴应该是一行还是在一个单元格中?或者更确切地说,您似乎希望每行都有一个手风琴?
-
@BertEvans 我想要下面一行的手风琴。因此,它基本上会在特定行下方展开,但不应展开所有行。可悲的是,目前 JSFiddle 扩展了所有行并且还出现在侧面而不是额外的行(如果你喜欢)
-
@BertEvans 这完美!非常感谢。在性能方面,是在
page load上加载手风琴的数据还是在点击时通过 ajax 加载/显示数据更好?
标签: javascript vue.js