element UI tree 控件,点击父节点进行异步加载

点击父节点,获取该节点的id,然后渲染成子节点

需求是:异步获取父节点,点击父节点,根据父节点的lable,异步获取子节点

官网的解析是这样的

setTimeout就是异步过程。

贴代码

data里面props定义,我的标签lable设置为index,异步过程就是获取index数据

props: {

label:'index',

children: [],

isLeaf:false

}

js部分

handleNodeClick(data) {

if (!data.isLeaf) {

console.log('resolve select data')

this.searchForm.yearid = data.year

    this.searchForm.monthid = data.monthid

    this.search()

}

},

loadNode(node, resolve){

if (node.level ===0) {

this.getyearList(resolve)

}

if (node.level >=1) {

this.getmouthByYear(node.data.yearid,resolve)

}

},

获取getyearList 就是父节点数据,getmouthByYear就是异步获取子节点数据

getyearList (resolve) {

let url ='zipfile/yearlist'

  this.axios.get(url)

.then(res => {

if (res.data.code ===200) {

let data = res.data.data

        if (data.length ===0) {

this.$message({

message:'请先上传zip文件',

type:'error'

          })

return false

        }

data.forEach(item => {

item.index = item.yearid

          item.isLeaf =true

        })

resolve(data)

}else {

this.$message({

message: res.data.msg,

type:'error'

        })

return false

      }

})

.catch(err => {

console.log(err)

})

}

resolve里面就是需返回props的数据,因为我props里面的lable标签设置为index,所以我将返回的数据yearid赋值给index,并将data父节点isLeaf置为true。

获取子节点数据请求

getmouthByYear (yearid,resolve) {

let url ='zipfile/monthlist'

  this.axios.post(url, {yearid:yearid}).then(res => {

if (res.data.code ===200) {

let data = res.data.data

      data.forEach(item => {

if (item.monthid) {

item.year = yearid

item.index = item.monthid

          item.isLeaf =false

        }

})

resolve(data)

}else {

this.$message({

message: res.data.msg,

type:'error'

      })

return false

    }

}).catch(err => {

console.log(err)

})

}




最终实现效果:点击父节点,获取子节点,点击子节点,根据父节点和子节点的参数,获取对应table数据

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容