# bs-form-builder **Repository Path**: jfinal/bs-form-builder ## Basic Information - **Project Name**: bs-form-builder - **Description**: No description available - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 68 - **Created**: 2022-05-05 - **Last Updated**: 2022-05-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bs-form-builder 一个基于 JQuery + Bootstrap (v4.x) 的表单构建工具。  ## 特点 - 1、基于 JQuery + Bootstrap (v4.x),简单易用 - 2、拖动的 html 组件,支持通过 Json 自定义扩展 - 3、组件的属性面板,支持通过 Json 自定义扩展 - 4、支持导出 json,然后自己通过 json 来构建自己的 UI 页面 - 5、支持导入 json 到 bsFormBuilder,用来进行二次编辑 - 6、丰富的 API,方便二次开发和扩展 - 7、支持 “模板” 功能,可以选择已有模板进行二次开发 - 8、内置轻量的 html 渲染引擎,速度极快,极好用~~ ## 快速使用 ```html
``` 在使用前,需要导入 bootstrap 和 jquery 的相关文件。 ```html ``` ## 开发文档 ### 1、初始化 通过 `$('#builder').bsFormBuilder({options...});` 进行初始化,`bsFormBuilder` 方法可以传入 options 配置,options 内容如下: ```javascript { //模式: "view" 预览模式, "builder" 构建工具模式 mode: "view", //使用哪些组件 useComponents:[], //初始化数据 datas:[], //操作按钮列表 actionButtons:[], //操作按钮模板 actionButtonTemplate:'', //组件扩展配置,配置的内容可以覆盖掉系统的配置 components: {}, //每个组件的默认属性 defaultProps: [], //属性渲染的 html 模板配置 propTemplates: {}, //初始化回调方法 onInit: function(bsFormBuilder){}, } ``` ### 2、方法调用 - 1、通过 `$('#builder').bsFormBuilder('methodName',arguments...);` 方法调用。 - 2、或者可以通过 `$('#builder').bsFormBuilder().data('bsFormBuilder')` 来获取 `bsFormBuilder` 实例,然后直接调用其方法。 **Bs-Form-Builder 支持的方法如下:** - init: 初始化,bsFormBuilder 自动调用 - render(data, withActive):通过 data 数据,来渲染出一个 html 内容 - renderDefault(data): 系统内置的默认渲染方法,当 component 未定义自己的 render 方法的时候,使用该方法进行渲染。 - deepCopy(target, withNewElementIdAndId):深度拷贝工具类 - createComponentData(component):通过 component 来创建 data 数据 - genRandomId():生成一个随机的 id - makeFormItemActive(elementId):设置选择状态 - deleteFormItem(elementId):删除一个 formItem - copyFormItem(elementId):复制一个 formItem - getDataByElementId(elementId):通过一个节点 id 获取 data 数据 - removeDataByElementId(elementId):通过节点 id 移除 data 数据 - getParentArrayByElementId(elementId):通过节点 id 获取其所在的 数组 - refreshDataIndex($parentElement):刷新 data 的 index 属性 - refreshPropsPanel():渲染(刷新)属性面板 - renderPropTemplate(prop, data, template):渲染属性模板 - exportToJson():导出 json 数据 - exportToHtml():导出 html 数据 - getDatas():获取 datas 数据,并可以对其进行修改 - addDataToRoot(data):添加一个 data 到根节点 - addDatasToRoot(array):添加一个 data 数组到根节点 - addDataToContainer(data, containerElementId, index):添加一个 data 到一个子container - addDatasToContainer(array, containerElementId, index):添加一个 data 数组到一个子container - updateDataAttr(data, attr, value):更新一个 data 的属性,并同步到 html 显示 - refreshDataElement(data):刷新 data 数据到 html - isViewMode():是否是视图模式 - isBuilderMode():是否是构建模式(构建工具) - destroy():销毁整个组件 ### 3、组件扩展 在 bs-form-builder 中,组件是通过一个 json 内容来定义的,一个完整的组件的 json 内容 如下: ```javascript { "name": "输入框", "tag": "input", "drag": { "title": "输入框", "type": "base", "index": 100, "iconClass": "bi bi-terminal" }, "template": '