vue3 element-plus el-cascader 动态加载

本文介绍了如何使用Vue框架中的ElementUICascader组件实现动态的2-4级联动,以及利用懒加载策略通过axios从服务器异步获取数据以提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态的目前是做2级联动,可以做成3,4级联动,但是无限级联动有空研究下
1.代码

<template>
  <el-cascader
    :props="data.props"
    v-model="data.value"
    filterable
    clearable
    placeholder="请选择"
    @change="changeArea"
  ></el-cascader>
</template>

<script setup>
import { ref, reactive, watch } from "vue";
import axios from "axios";

const data = reactive({
  value: [], // 多级联动的值 => 会是一个数组
  cascaderVal: [],
  props: {
    lazy: true,
    lazyLoad: (node, resolve) => {
      // node 节点数据 node.value => 当前节点的值
      // level: 层级 => 1,2,3,4
      const { level } = node;
      // 动态节点
      const nodes = [];
      if (level == 0) {
      axios.post('xxx').then((res) => {
          res.data.map((item) => {
            //按照官方字段赋值
            let obj = {
              value: item.id,
              code: item.provinceCode,
              label: item.provinceName,
              leaf: node.level >= 1,
            };
            nodes.push(obj);
          });
          //  resolve 节点返回
          resolve(nodes);
        });
      } else if (level == 1) {
        axios.post('xxx',{ provinceCode: node.data.code }).then((res) => {
          res.data.map((item) => {
            let obj = {
              code: item.cityCode,
              value: item.id,
              label: item.cityName,
              leaf: node.level >= 1,
            };
            nodes.push(obj);
          });
          //  resolve 节点返回
          resolve(nodes);
        });
      }
    },
  },
});
</script>

<style scoped lang="scss"></style>
### Vue3 中使用 Element Plus 的 `el-table` 组件实现多选功能 在 Vue3Element Plus 中,通过配置 `el-table-column` 并设置其属性为 `type="selection"` 可以轻松启用表格的多选功能[^1]。 下面是一个完整的示例来展示如何创建一个多选表单: ```html <template> <div style="margin: 20px;"> <!-- 定义了一个带有选择框的列 --> <el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"/> <el-table-column prop="date" label="日期" /> <el-table-column prop="name" label="姓名" /> <el-table-column prop="address" label="地址" /> </el-table> <br /> <!-- 显示已选项数量并提供清除按钮 --> <span>选择了 {{ multipleSelection.length }} 行</span> <el-button @click="toggleSelection()">取消选择</el-button> </div> </template> <script setup lang="ts"> import { ref } from &#39;vue&#39; const tableData = [ { date: &#39;2016-05-03&#39;, name: &#39;Tom&#39;, address: &#39;No. 189, Grove St, Los Angeles&#39; }, // 更多项... ] // 存储当前被选中的行数据 let multipleSelection = ref([]) // 当用户改变所选项时触发此函数更新 selectedItems 数组的内容 function handleSelectionChange(val) { multipleSelection.value = val; } // 提供一个方法用来清空所有的选择状态 function toggleSelection(rows?) { if (rows) { rows.forEach(row => { this.$refs.multipleTableRef.toggleRowSelection(row); }); } else { this.$refs.multipleTableRef.clearSelection(); } } </script> ``` 为了能够调用像 `clearSelection()` 这样的 API 方法,需要给 `<el-table>` 添加 `ref` 属性以便于后续操作该实例对象。当想要重置用户的选取时,则可以通过这个引用访问到对应的 API 来执行相应的动作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值