包兄 2021-05-28 16:33 采纳率: 50%
浏览 669
已结题

Vue+elementUI table内对vfor下拉框的选项过滤问题

今天在做项目中的一个根据角色筛选可选用户列表的功能犯难了

下面这个是HTML部分的设置

<el-table border :data="tableData"  max-height="400px" style="width: 100%">
    <el-table-column align="center" type="index" width="55" label="序号"></el-table-column>
    <el-table-column align="center" prop="roleId" min-width="80" label="角色id"></el-table-column>
    <el-table-column label="操作" align="center" fixed="right" min-width="120" >
        <template>
            <el-select v-model="updateForm.roleId" style="width:80%" clearable placeholder="请选择">
            <el-option v-for="item in userList" :key="item.id" :label="item.userName" :value="item.id"></el-option>
	    </el-select>
        </template>
    </el-table-column>
</el-table>

 下面这个是vue的数据设置

export default {
    data () {
	return {
	// 表格数据
	    tableData: [{roleId: 1}, {roleId: 2}, {roleId: 3}],
        // 用户列表
	    userList: [
		    { id: 1,
		      userName: '管理员',
		      roleId: 1
		    },
		    { id: 2,
		      userName: '李四',
		      roleId: 2
   		    },
		    { id: 3,
		      userName: '张三',
		        roleId: 2
		    },
		    { id: 4,
		      userName: '王五',
		      roleId: 1,
		    }],
	// 更新表单
	    updateNodeForm: { roleId: undefined }
    };
}

想要实现的目的是,表格中的下拉选项内可以根据角色id过滤出合适的用户列表来选择:

例如,表格第一列第一行的roleId为1,那么第二列的下拉框内只想出现管理员和王五的选项,

依此类推,

----------------------------------------

自己摸索过程中,尝试过给v-for加入计算属性/过滤方法, 但问题出在了表格具体行的roleId并没有传递计算属性/过滤方法内,导致无法过滤

目前自己想到另一种方案是在表格渲染时候就给每行算出所需用户列表然后存放在一个全局对象中,仍在尝试中

不知道是否有其他更简单方便的方案,虚心请教

自己刚刚开始接触Vue,个别表述不得当或者不清晰的,也烦请指教

  • 写回答

4条回答 默认 最新

  • 易书生 2021-05-28 16:38
    关注
    <el-table border :data="tableData"  max-height="400px" style="width: 100%">
        <el-table-column align="center" type="index" width="55" label="序号"></el-table-column>
        <el-table-column align="center" prop="roleId" min-width="80" label="角色id"></el-table-column>
        <el-table-column label="操作" align="center" fixed="right" min-width="120" >
            <template slot-scope="scope">
                <el-select v-model="updateForm.roleId" style="width:80%" clearable placeholder="请选择" 
                <el-option v-for="item in userList" :key="item.id" :label="item.userName" v-if="item.roleId==socpe.row.roleId" :value="item.id"></el-option>
    	    </el-select>
            </template>
        </el-table-column>
    </el-table>

    用这个代码试试呢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月13日

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低