You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BootstrapVue b-table#row-details插槽过滤关联子任务问题咨询

解决方案

你遇到的问题核心是没有对传递给子b-table的数据源做过滤,且v-if的使用位置和逻辑错误:原有代码中的v-if写在子表格标签上,既没有对应作用域的subtask变量,也无法实现对子项的筛选,只会控制整个表格的显示隐藏。

最简修改方式

直接修改行详情插槽中b-table的items绑定逻辑,对subtasks数组做实时过滤即可,不需要额外加v-if:

<template #row-details="row">
    <b-card>
        <b-table 
            :items="subtasks.filter(subtask => subtask.subtaskof === row.item.id)" 
            outlined 
            :fields="fields" 
            thead-class="d-none" 
            responsive="sm"
        >
            <!-- 可选:无子任务时的空状态提示 -->
            <template #empty>
                <p class="text-muted m-2">当前任务暂无子任务</p>
            </template>
        </b-table>
    </b-card>
</template>

可复用优化方案

如果多个地方需要用到子任务过滤逻辑,可以把过滤逻辑抽到methods中,模板代码更整洁:

  1. 先在组件的methods中添加方法:
methods: {
    // 其他原有方法保留,新增以下方法
    getTaskSubtasks (taskId) {
        return this.subtasks.filter(subtask => subtask.subtaskof === taskId)
    }
}
  1. 模板中绑定该方法即可:
<b-table 
    :items="getTaskSubtasks(row.item.id)" 
    outlined 
    :fields="fields" 
    thead-class="d-none" 
    responsive="sm"
>

两种方案都可以实现仅展示和当前任务ID匹配的子任务,你可以根据自己的代码复杂度选择。

内容的提问来源于stack exchange,提问作者eddbreuer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:12:02