layui扩展组件无反应

提问 已结 11 293
云中客
云中客 2020-2-12
悬赏:50飞吻
版本:layui 2.5.6 浏览器:谷歌
如下图

这图中写的是js中的代码,想通过 exports 暴露出来

引用

目录

结果下拉框倒是渲染出来了,就是 table 走接口根本没有进入。
我想知道是哪里出问题了吗,帮我看看,谢谢!
回帖
  • EiSCN
    2020-2-12
    你按F12进高级模式看下有什么错误提示没
    0 回复
  • 云中客
    2020-2-12
    @EiSCN 啥错误都没报
    0 回复
  • EiSCN
    2020-2-12
    @云中客 没用过这个扩展,一下子也说不上来,没法尝试。不好意思帮不上你
    0 回复
  • 云中客
    2020-2-12
    @EiSCN 这是自己写的,想扩展出去
    0 回复
  • EiSCN
    2020-2-12
    @云中客 这是一个什么复杂的扩展,看着像表格,乍么又像是表单?
    0 回复
  • 云中客
    2020-2-12
    @EiSCN [吃惊] 自己写的页面js,想这样扩展出去,就不用每个页面引用一次
    0 回复
  • 云中客
    2020-2-12
    0 回复
  • 云中客
    2020-2-12
    @DJ李二狗 大佬帮帮忙,谢谢
    0 回复
  • CrazyYi
    2020-2-13
    @云中客
    你这里,是因为你的exports 用法不对。
    正确的写法如下(我自己参考你的模拟了一个)


    1、自定义扩展插件(注意最后的那个对外展示的类的创建方法)
    layui.define(['table', 'jquery'], function (exports) {
    const MOD_NAME = 'test4'
    const table = layui.table;

    // 这个是类构造:作用,自动执行表格渲染
    const classIns = function () {
    table.render({
    elem: '#mainList',
    url: '改成你自己的url',
    method: 'get',
    cols: [[
    {type: 'checkbox'},
    {type: 'numbers', title: 'ID', width: 50,},
    {field: 'order_no', title: '流水号', width: 200, hide: true,},
    {field: 'carname', title: '车辆名', width: 100},
    {field: 'do_time', title: '生成时间', width: 200,},
    {field: 'do_city', title: '城市', width: 100},
    ]],
    })
    };

    // 创建一个新类,用于对外展示的。这个类,需要包含一个初始化(或者渲染的方法)
    const classOut = {
    // 类的渲染/初始化 方法
    render: function () { classIns(); }
    };

    //输出接口
    exports(MOD_NAME, classOut);
    });



    2、外部调用
    <script>
    // 配置
    layui.config({
    base: '/public/plugin/layui/extra/crazyTest/'
    }).extend({
    test4: 'test4',
    }).use('test4', function () {
    let test4 = layui.test4;
    test4.render(); // 执行扩展插件的渲染(这样才能执行内部的table.render)
    });
    </script>



    关键:
    1、内部要执行的方法(比如内部要执行 table.render),一定要能被外部触发。
    2、单纯的use 一个插件,并不会执行插件内部任何事件。只是加载了插件而已。
    0 回复
  • CrazyYi
    2020-2-13
    @云中客 我自己在本地已经测试通过。可以正常使用。
    0 回复