vue elementui table回显

javascript 复制代码
<template>
  <div>
    <el-button @click="openDialog">打开弹窗</el-button>
    <el-dialog :visible.sync="dialogVisible" width="50%">
      <el-table
        :data="tableData"
        style="width: 100%"
        @selection-change="handleSelectionChange"
      >
        <el-table-column
          type="selection"
          width="55"
        ></el-table-column>
        <el-table-column
          prop="id"
          label="ID"
        ></el-table-column>
        <el-table-column
          prop="name"
          label="名称"
        ></el-table-column>
      </el-table>
      <el-pagination
        @current-change="handlePageChange"
        :current-page="currentPage"
        :page-sizes="[10, 20, 50]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="totalItems"
      ></el-pagination>
      <div>选中的文本: {{ selectedText }}</div>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialogVisible: false,
      tableData: [], // 表格数据
      selectedIds: [], // 选中的ID数组
      selectedText: '', // 选中的文本字符串
      currentPage: 1, // 当前页码
      pageSize: 10, // 每页显示的条目数
      totalItems: 0, // 总条目数
    };
  },
  methods: {
    // 打开弹窗
    openDialog() {
      this.dialogVisible = true;
      this.loadTableData();
    },
    
    // 加载表格数据
    loadTableData() {
      // 假设 fetchTableData 是一个异步方法,用于从API获取表格数据
      // 在这里,您需要根据您的实际需求实现这个方法
      this.fetchTableData(this.currentPage, this.pageSize).then(data => {
        this.tableData = data.items;
        this.totalItems = data.total;
        
        // 设置表格的选中状态
        this.$refs.multipleTable.clearSelection();
        this.selectedIds.forEach(id => {
          const row = this.tableData.find(row => row.id === id);
          if (row) {
            this.$refs.multipleTable.toggleRowSelection(row, true);
          }
        });
      });
    },
    
    // 处理checkbox变化
    handleSelectionChange(val) {
      this.selectedIds = val.map(item => item.id);
      this.selectedText = val.map(item => item.name).join('、');
    },
    
    // 处理翻页
    handlePageChange(val) {
      this.currentPage = val;
      this.loadTableData();
    },
    
    // 假设的异步方法,用于从API获取表格数据
    fetchTableData(page, pageSize) {
      // 替换为实际的API调用逻辑
      // 这里返回的是一个模拟的Promise
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve({
            items: [
              // 假设的数据
              { id: 1, name: 'Item 1' },
              { id: 2, name: 'Item 2' },
              // ...更多数据
            ],
            total: 100, // 总条数
          });
        }, 500);
      });
    },
  },
  created() {
    // 可以在这里从本地存储或其他地方加载之前保存的selectedIds
    // 例如:
    // const savedIds = localStorage.getItem('selectedIds');
    // if (savedIds) {
    //   this.selectedIds = JSON.parse(savedIds);
    // }
  },
}

vue elementui 打开弹窗 弹窗里有table 勾选table里的checkbox 获得id的集合并把对应的文本用顿号隔开显示在页面 第二次点开table的时候 通过之前选中的id集合 回显被选中的checkbox状态 翻页的时候亦是如此

相关推荐
Best_Liu~1 小时前
el-table实现固定列,及解决固定列导致部分滚动条无法拖动的问题
前端·javascript·vue.js
_斯洛伐克2 小时前
下降npm版本
前端·vue.js
苏十八3 小时前
前端进阶:Vue.js
前端·javascript·vue.js·前端框架·npm·node.js·ecmascript
st紫月4 小时前
用MySQL+node+vue做一个学生信息管理系统(四):制作增加、删除、修改的组件和对应的路由
前端·vue.js·mysql
乐容4 小时前
vue3使用pinia中的actions,需要调用接口的话
前端·javascript·vue.js
似水明俊德5 小时前
ASP.NET Core Blazor 5:Blazor表单和数据
java·前端·javascript·html·asp.net
friklogff7 小时前
【JavaScript脚本宇宙】美化网格布局:Isotope和Masonry让你的网页焕然一新
开发语言·前端·javascript
程楠楠&M7 小时前
vue3.0(十六)axios详解以及完整封装方法
前端·javascript·vue.js·axios·anti-design-vue
小C学安全8 小时前
【VUE基础】VUE3第三节—核心语法之ref标签、props
前端·vue.js·typescript
甜甜圈的小饼干8 小时前
Spring Boot+Vue项目从零入手
vue.js·spring boot·后端