当前位置: 首页 > article >正文

使用layui过程中的问题

场景:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Layui Multiple Tables Example</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layui/dist/css/layui.css">
</head>
<body>

<div>
    <table id="dataTable1" class="layui-hide"></table>
    <table id="dataTable2" class="layui-hide"></table>
    <table id="dataTable3" class="layui-hide"></table>
    <table id="dataTable4" class="layui-hide"></table>
</div>

<script src="https://cdn.jsdelivr.net/npm/layui/dist/layui.all.js"></script>
<script>
    // 假设这是你需要的数据和列配置
    var tableData1 = [...]; // 数据源1
    var tableData2 = [...]; // 数据源2
    var tableData3 = [...]; // 数据源3
    var tableData4 = [...]; // 数据源4

    var tableClos = [
        [ // 表格1列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格2列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格3列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格4列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ]
    ];

    
    

    // 在此处加载表格和自定义模块
    layui.use(['table', 'soulTable'], function() {
        var table = layui.table;
        var soulTable = layui.soulTable; // 获取自定义模块

        // 渲染四个表格
        var tables = [
            { elem: "#dataTable1", data: tableData1, cols: tableClos[0] },
            { elem: "#dataTable2", data: tableData2, cols: tableClos[1] },
            { elem: "#dataTable3", data: tableData3, cols: tableClos[2] },
            { elem: "#dataTable4", data: tableData4, cols: tableClos[3] }
        ];

        tables.forEach(function(tableConfig) {
            layui.config({
                base: '../commons/plug-in/layui2.6.7/ext',
                version: "v1.6.4"
            }).extend({
                soulTable: "soulTable"
            });

            table.render({
                elem: tableConfig.elem,
                height: 300, // 替换为实际需要的高度
                page: false,
                data: tableConfig.data, // 数据源
                cols: [tableConfig.cols], // 列配置
                done: function() {
                    soulTable.render(this); // 调用 soulTable 的 render 方法
                }
            });
        });
    });
</script>

</body>
</html>

我这样写后,控制台报错:Layui hint: 模块名 SoulTable 已被占用

回答:

在使用 Layui 的自定义模块时,出现 “Layui hint: 模块名 SoulTable 已被占用” 这样的错误,通常是因为我们尝试多次通过 `extend` 方法注册同一个模块名。解决这个问题的常见方法是确保只调用一次 `extend` 方法,而不是在每次使用 `soulTable` 时都重新定义它。

更新后的代码示例

你可以按照以下方式修改你的代码,以避免重复扩展模块:


<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Layui Multiple Tables Example</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layui/dist/css/layui.css">
</head>
<body>

<div>
    <table id="dataTable1" class="layui-hide"></table>
    <table id="dataTable2" class="layui-hide"></table>
    <table id="dataTable3" class="layui-hide"></table>
    <table id="dataTable4" class="layui-hide"></table>
</div>

<script src="https://cdn.jsdelivr.net/npm/layui/dist/layui.all.js"></script>
<script>
    // 假设这是你需要的数据和列配置
    var tableData1 = [...]; // 数据源1
    var tableData2 = [...]; // 数据源2
    var tableData3 = [...]; // 数据源3
    var tableData4 = [...]; // 数据源4

    var tableClos = [
        [ // 表格1列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格2列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格3列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ],
        [ // 表格4列配置
            { field: 'id', title: 'ID', width: 80, sort: true },
            { field: 'name', title: '姓名', width: 120 },
            { field: 'age', title: '年龄', width: 80, sort: true }
        ]
    ];

    // 确保只在一次执行中扩展模块
    layui.config({
        base: '../commons/plug-in/layui2.6.7/ext',
        version: "v1.6.4"
    }).extend({
        soulTable: "soulTable"
    });

    // 在此处加载表格和自定义模块
    layui.use(['table', 'soulTable'], function() {
        var table = layui.table;
        var soulTable = layui.soulTable; // 获取自定义模块

        // 渲染四个表格
        var tables = [
            { elem: "#dataTable1", data: tableData1, cols: tableClos[0] },
            { elem: "#dataTable2", data: tableData2, cols: tableClos[1] },
            { elem: "#dataTable3", data: tableData3, cols: tableClos[2] },
            { elem: "#dataTable4", data: tableData4, cols: tableClos[3] }
        ];

        tables.forEach(function(tableConfig) {
            table.render({
                elem: tableConfig.elem,
                height: 300, // 替换为实际需要的高度
                page: false,
                data: tableConfig.data, // 数据源
                cols: [tableConfig.cols], // 列配置
                done: function() {
                    soulTable.render(this); // 调用 soulTable 的 render 方法
                }
            });
        });
    });
</script>

</body>
</html>


改动说明

1. 避免重复扩展:
   - 将 `layui.config().extend()` 部分放在外部,确保在页面加载时只运行一次,不会重复注册 `soulTable` 模块。

2. 使用数组存储表格配置:
   - 我创建了一个 `tables` 数组,将所有表格的配置集中管理,并用 `forEach` 循环来渲染每个表格。这种方式更简洁,易于维护。

这样,可以确保在加载和使用 `soulTable` 模块时不会碰到“模块名已被占用”的错误。如果还有其他问题或具体需求,请随时告诉我!


http://www.kler.cn/a/387722.html

相关文章:

  • Django 的 ModelViewSet 中的 get_queryset 方法自定义查询集
  • OSS文件上传
  • OLED 显示画面的变换操作——上下、左右翻转
  • 协程3 --- golang的协程调度
  • SDL渲染器和纹理
  • 【缓存策略】你知道 Cache Aside(缓存旁路)这个缓存策略吗
  • STM32各模块
  • 21. 评估架构
  • 快速上手Cellranger
  • 股票投资学习路线图
  • 西南科技大学竞赛与实践——实验一Paillier算法及其实现
  • Spring-Day8
  • Gradle命令编译Android Studio工程项目并签名
  • OJ算法练习(双指针篇)
  • django+postgresql
  • 题目:Wangzyy的卡牌游戏
  • 前端入门一之CSS知识详解
  • SpringBoot续+SpringMVC入门介绍
  • 二开CS—上线流量特征shellcode生成修改模板修改反编译打包
  • [QUIC] QUIC Frames
  • (C++回溯算法)微信小程序“开局托儿所”游戏
  • 图为科技与广东省北斗移动物联网产业研究院达成战略合作
  • mp3格式音频怎么做成二维码?扫码获取音频文件的制作方法
  • MySQL:客户端工具创建数据库
  • 25浙江省考-28天学行测-Day1
  • Python爬虫基础-正则表达式!