IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 从零搭建低代码平台(九)实现编辑区的初始化功能 -> 正文阅读

[JavaScript知识库]从零搭建低代码平台(九)实现编辑区的初始化功能

目录

大体介绍

具体思路

部分代码实现

预期效果?编辑


大体介绍

在进行组件移动的同时,可能会出现组件移动出错或者是更改组件的zIndex层的问题,只靠预览区已经没有办法进行实现了,所以我们引入了编辑区,这样的话,我们就可以实现重做、撤销、导入、导出、清空、删除等一系列的功能。

具体思路

我起初打算是在编辑区添加一系列的按钮来实现对组件的所有控制操作,添加的功能按钮主要包括

撤销:当移动或者引入组件发生错误的时候能够实现回溯的效果。

重做:当撤销的操作发生错误的时候能过实现撤销“撤销”的效果

导出:最终引入的组件包括它的位置、样式等通过json数据的形式进行传输出来

导入:通过导入json语句来实现引入组件位置、样式等一系列的操作。

预览:通过预览来实现就组件功能的展示功能,包括组件的跳转、弹出事件。

清空:通过清空可以实现对当前画布中的组件的清空功能。

删除:通过选定一个组件,点击删除按钮,这样就可以实现删除指定的组件。

置顶:实现将组件的zIndex置于最高层。

置底:实现将组件的zIndex置于最低层。

锁定:通过选定一个组件,对这个组件进行锁定的功能(在画布上不能进行拖拽的功能)。

解锁:就是对锁定的组件进行解锁的功能。、

组合:通过选定一系列的组件,将这些组件进行组合,从而实现合并成为一个组件。

拆分:就是对已经组合的组件进行拆分的操作,这样就可以将合并的组件分开。

部分代码实现

<div class="editor-top">
                {buttons.map((btn, index) => {
                    // console.log(JSON.stringify(data.value))
                    let deleteDisabled = true
                    let topDisabled = true
                    let bottomDisabled = true
                    let lockDisabled = true
                    let unlockDisabled = true
                    data.value.blocks.forEach((block, idx) => {
                        if (block.focus === true && block.lock === false) {
                            deleteDisabled = false
                            topDisabled = false
                            bottomDisabled = false
                            lockDisabled = false
                        }
                        if (block.focus === true && block.lock === true) {
                            unlockDisabled = false
                        }
                    })
                    // console.log(index)
                    if (index === 6) {
                        // 删除
                        return <ElButton class="editor-top-button" disabled={deleteDisabled} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 7) {
                        return <ElButton class="editor-top-button" disabled={topDisabled} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 8) {
                        return <ElButton class="editor-top-button" disabled={bottomDisabled} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 9) {
                        return <ElButton class="editor-top-button" disabled={lockDisabled} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 10) {
                        return <ElButton class="editor-top-button" disabled={unlockDisabled} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 11) {
                        return <ElButton class="editor-top-button" disabled={true} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else if (index === 12) {
                        return <ElButton class="editor-top-button" disabled={true} onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    } else {
                        return <ElButton class="editor-top-button" onClick={btn.handler}>
                            <span class={btn.label}>{btn.label}</span>
                        </ElButton>
                    }
                })}

            </div>

预期效果

?大体就暂时实现这部分功能,这样的话,对组件的编辑功能差不错就可以全部覆盖了,当然这一个篇文章只是讲述了要实现的功能,具体实现的话,我会在后面的文章中具体呈现出来。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:16:28  更:2022-05-26 15:17:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/2 16:33:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码