vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > element Cascader级联选择器最后一级显示空白

vue element Cascader级联选择器解决最后一级显示空白问题

作者:王博wangbo

这篇文章主要介绍了vue element Cascader级联选择器解决最后一级显示空白问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.遇到的问题

级联选择器,发现每个层级的最后一层总是显示为无数据。

预期效果为,当无数据时,应该不能点击展开。

2.解决思路

通过与element官网提供的数据对比后发现,当子级为空时,后台应该不返回children这一层级了,前端暂时处理下数据。

 // 格式化数据源
    this.options = this.formatData(data)
    // 格式化数据,递归将空的children置为undefined
    formatData(data) {
      for (var i = 0; i < data.length; i++) {
        if (data[i].children.length < 1) {
          data[i].children = undefined
        } else {
          this.formatData(data[i].children)
        }
      }
      return data
    }

3.完整代码

<template>
  <div class="white-body-view">
    <el-cascader v-model="value" :options="options" />
  </div>
</template>
<script>
export default {
  data() {
    return {
      options: [],
      value: ''
    }
  },
  created() {
    this.initData()
  },
  methods: {
    initData() {
      const data = [
        {
          value: 'zhinan',
          label: '指南',
          children: [{
            value: 'shejiyuanze',
            label: '设计原则',
            children: []
          }, {
            value: 'daohang',
            label: '导航',
            children: []
          }]
        },
        {
          value: 'ziyuan',
          label: '资源',
          children: []
        }]
      this.options = this.formatData(data)
    },
    formatData(data) {
      for (var i = 0; i < data.length; i++) {
        if (data[i].children.length < 1) {
          data[i].children = undefined
        } else {
          this.formatData(data[i].children)
        }
      }
      return data
    }
  }
}
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文