使用 Layui 的 template 模块来动态加载select选项

可以使用 Layui 的 template 模块来动态加载选项,如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
   <title>Layui 动态模板示例</title>
    <link rel="stylesheet" href="path/to/your/layui/css/layui.css">
   <script src="path/to/your/layui/layui.js"></script>
</head>
<body>

<div class="layui-input-inline">
   <select name="moduleId" lay-filter="moduleId">
       <option value="">请选择模块</option>
    </select>
</div><script>
    layui.use(['admin', 'form'], function () {
        var $ = layui.$,
            form = layui.form,
            admin = layui.admin;

        // 加载模块列表
        admin.req({
            url: '/api/security/module/list?pageNumber=1&pageSize=10000',
            dataType: 'json',
            success: function (r) {
                var options = '';
                layui.each(r.body.rows, function (index, item) {
                    options +='<option value="' + item.id + '">' + item.name + '</option>';
                });

                // 渲染选项
                $('select[name="moduleId"]').html(options);
                form.render('select'); // 重新渲染 select 组件
            }
        });

        // 监听 select 组件的 change 事件
        layui.form.on('select(moduleId)', function (data) {
            console.log('选中的值为:', data.value);
        });
    });
</script>

</body>
</html>

在这个示例中,我们首先定义了一个 select 组件,并使用 Layui 的 admin.req 方法来动态加载选项。然后,我们使用 jQuery 将选项插入到 select组件中,并使用form.render(‘select’)方法重新渲染select` 组件。

请注意,您需要根据您的实际需求修改 URL 和数据处理逻辑。同时,您还可以使用其他 Layui 组件和方法来实现更复杂的功能。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现拖拽下拉选项重新排序,可以使用 Element UI 自带的拖拽指令 el-draggable 和拖拽事件 dragstart、dragover、drop 和 dragend。以下是一个示例代码: ```html <template> <div> <el-select v-model="selectedOption" placeholder="请选择"> <el-option v-for="(option, index) in options" :key="index" :label="option.label" :value="option.value" v-el-draggable="{ group: 'options', onDragstart: handleDragstart, onDrop: handleDrop }" ></el-option> </el-select> </div> </template> <script> export default { data() { return { selectedOption: '', options: [ { label: '选项1', value: 'option1' }, { label: '选项2', value: 'option2' }, { label: '选项3', value: 'option3' }, { label: '选项4', value: 'option4' } ] } }, methods: { handleDragstart(e) { const index = e.target.dataset.index e.dataTransfer.setData('text/plain', index) e.dataTransfer.effectAllowed = 'move' }, handleDrop(e) { e.preventDefault() const targetIndex = e.target.dataset.index const sourceIndex = e.dataTransfer.getData('text/plain') if (targetIndex !== sourceIndex) { const sourceOption = this.options[sourceIndex] this.options.splice(sourceIndex, 1) this.options.splice(targetIndex, 0, sourceOption) } } } } </script> ``` 在这个实现中,我们使用了 el-draggable 指令将 el-option 元素设置为可拖拽,并指定了一个名为 options 的组。当用户开始拖拽一个选项时,会触发 dragstart 事件,我们在 handleDragstart 方法中将选项的索引设置为数据传输的 plain 文本数据。当用户将一个选项拖放到另一个选项上时,会触发 drop 事件,我们在 handleDrop 方法中获取目标选项的索引,并在选项数组中重新排列选项的顺序。最后,我们使用 preventDefault 方法来防止浏览器默认行为。 注意,这个示例代码中没有提供拖拽时的视觉反馈。如果您需要更好的用户体验,您可以添加一些 CSS 样式来指示用户正在拖拽的选项

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guochangjin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值