需要:每抉择一级都间接获取以后值(而且是动静加载子集合)

呈现问题:当第一次加载子集合时候,value没有立刻变动。@on-change事件也没有监听到变动。

例如:

代码监听:

回调办法:

加载子集合

解决办法:手动批改value值


全副代码:

<template>  <Cascader :value="value"            :data="data4"            :load-data="loadData"            change-on-select            style="width:200px"            @on-change='func_change'></Cascader></template><script>import * as api from '@/api/client-crm'export default {  name: '',  props: {    value: {      type: [Array],      default: () => {        return []      }    },  },  data () {    return {      loading: false,      data4: [],    }  },  created () {    this.func_getCountries()  },  methods: {    // 国家    func_getCountries () {      this.loading = true;      api.getCountries().then(res => {        console.log(res)        if (res.code === 0) {          let data = []          res.result.forEach(element => {            data.push({              level: 1,              id: element.id,              value: element.country,              label: element.country,              children: [],              loading: false            })          });          this.data4 = data          console.log(this.data4);        }      }).finally(() => {        this.loading = false;      })    },    // 省    func_getProvinces (id) {      this.loading = true;      let params = {        countryId: id      }      return api.getProvinces(params)    },    // 区    func_getCities (id) {      this.loading = true;      let params = {        provinceId: id      }      return api.getCities(params)    },    // 动静加载    async loadData (item, callback) {      item.loading = true;      let data = []      if (item.level === 1) {        // 在加载时候,不会触发,func_change 办法,所以手动返回        this.value[0] = item.value        let res = await this.func_getProvinces(item.id)        res.result.forEach(element => {          data.push({            level: 2,            id: element.id,            value: element.province,            label: element.province,            children: [],            loading: false          })        });      } else if (item.level === 2) {        // 在加载时候,不会触发,func_change 办法,所以手动触发        this.value[1] = item.value        let res = await this.func_getCities(item.id)        res.result.forEach(element => {          data.push({            level: 3,            id: element.id,            value: element.city,            label: element.city          })        });      }      item.children = data      item.loading = false;      // 手动触发      this.func_change(this.value)      callback()    },    // 抉择变动    func_change (val) {      console.log('地区:', val);      this.$emit('input', val)    }  }}</script><style scoped></style>