elementui tree获取父节点_elementui的级联选择组件的使用

  1. 查看elementui的官网,查看级联选择器:

 <el-cascader    v-model="value"    :options="options"    @change="handleChange">   el-cascader>

在添加窗口上写

 <el-form-item label="所属分类id" prop="catelogId">      <el-cascader        v-model="dataForm.catelogId"        :options="categorys">      el-cascader>

categorys定义好这个,需要在return中表明一下[]

export default {    data () {      return {        categorys:[],      }    },

然而这个数组是需要从服务端查询出来的,在这里可以参照前几天写过的查询树节点的方法,在方法合集中:

getCategorys(){        this.$http({          url: this.$http.adornUrl('/product/category/list/tree'),//请求路径          method: 'get',//请求方式          /* params: this.$http.adornParams({//带参数的用这个方法以key:value的方式传递             'page': this.pageIndex,             'limit': this.pageSize,             'roleName': this.dataForm.roleName           })*/        }).then(({data}) => {//请求成功之后就是then了          console.log("成功获取数据",data.data)          this.categorys=data.data;        })      },

而这个组件是想在刚创建的时候就去调用这个方法,写到生命周期的方法中~

//页面加载的时候就调用created() {  this.getCategories();}

到此测试一下发现格式是已经出来了,但是没有相应的数据,那是因为组件定义了值没有和我们定义的对应上

28d562551651bb56740a4abb84b2d8d7.png

参考文档的属性值,对应上咱们规定的字段值

data () {      return {        props:{          value:"catId",          label:"name",          children:"children",        },        categorys:[],      }    },

再次测试发现

5ab987ee81850cf307bb785e112a5296.png

检查这个接口也有返回一个空的数组

747b8ee5033b33b8fbdb260670fe5c8b.png

这时候就可以在后台稍做处理一下了~

2.找到实体类,标注一个注解

/** 保存子分类用的* */@JsonInclude(JsonInclude.Include.NON_EMPTY)//返回的list不为空的时候才会带上这个一起返回@TableField(exist=false)//声明不是数据库里面的,用来存父级数据的子数据private List children;

再次测试,发现大功告成~

3b705ae5a6d1a35df6b6e69b5118878c.png

22d9e4856530352f71fce8bcf16302db.png

保存到数据库中是需要一个数组,需要改一下声明的分类id

catelogIds: [],//组件的返回值是一个数组catelogId: 0,//最终提交的是最后一个
<el-cascader        v-model="dataForm.catelogIds"        :options="categorys"        :props="props"      >      el-cascader>

3.最后提交的数据

'catelogId': this.dataForm.catelogIds[this.dataForm.catelogIds.length-1]

在保存成功之后。页面刷新说明成功:在这里有一个子组件传递父组件的一个方法:

if (data && data.code === 0) {                this.$message({                  message: '操作成功',                  type: 'success',                  duration: 1500,                  onClose: () => {                    this.visible = false                    this.$emit('refreshDataList')                  }                })              }

this.$emit('refreshDataList')在子组件中写了,去父组件查找一下这个所监听的

        <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList">add-or-update>

以上是我的个人笔记,探索未知密宝,记录学习笔记,分享有趣的故事,欢迎大家来访!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值