首页 > 其他分享 >OpenDataV低代码平台增加自定义属性编辑

OpenDataV低代码平台增加自定义属性编辑

时间:2022-10-01 22:12:06浏览次数:85  
标签:自定义 value OpenDataV 组件 FormType 编辑框 属性

上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明。我们先来看一下OpenDataV中的属性编辑功能。

20221001202917

当我们拖动一个组件到画布中以后,点击组件,在页面的右侧就出现了对应的属性编辑。在上一篇新增组件的文章中我们有一个配置文件config.ts,配置了组件的样式和属性修改,其中对于每一项配置我们设置了类型FormType,就像如下:

目前我们的FormType只支持几种固定的方式,这里所配置的类型就会反应到属性编辑框中,例如FormType.COLOR,就会是一个颜色选择框,FormType.SWITCH就是一个开关按钮,那如果需要用到的编辑方式在FormType里面不支持怎么办呢?我们提供了FormType.CUSTOM自定义属性编辑类型,这样就可以针对我们自己的组件来定制属性编辑框。下面我带大家一步步完成一个自定义的属性编辑框。我们以ScrollTable组件为例

增加文件

Table/ScrollTable目录下增加vue文件xxx.vue,名称可以随意定义,内容如下:

<template>
  <n-form :model="formData" size="small" label-placement="left">
    <n-form-item label="行高度">
      <n-input-number v-model:value="formData.height" @keypress.enter.prevent="changeData" />
    </n-form-item>
    <n-form-item label="背景色">
      <div class="backcolor">
        <n-color-picker v-model:value="formData.oddRowBGC" @complete="changeData" />
        <span class="title">奇数行</span>
      </div>
      <div class="backcolor">
        <n-color-picker v-model:value="formData.evenRowBGC" @complete="changeData" />
        <span class="title">偶数行</span>
      </div>
    </n-form-item>
  </n-form>
</template>

<script lang="ts" setup>
......
</script>

对于自定义属性编辑组件的书写要求有以下几个:

  • 组件需要接收一个value(必须)和args(可选)属性
  • 组件必须给父组件提供updateValue方法

组件处理

<script lang="ts" setup>
import { reactive } from 'vue'
import { NForm, NFormItem, NInputNumber, NColorPicker } from 'naive-ui'
import { RowType } from './type'

const props = defineProps<{
  value: RowType
  args: any
}>()

const emits = defineEmits<{
  (e: 'change', value: RowType)
}>()

const formData = reactive<RowType>({
  height: props.value.height || 30,
  oddRowBGC: props.value.oddRowBGC || '#003B51',
  evenRowBGC: props.value.evenRowBGC || '#0A2732'
})

const changeData = () => {
  emits('change', formData)
}
</script>

value属性接收的是自定义编辑框的值,和普通的属性一样,但是这里可以接收任意的数据,数组、对象或者基础类型数据,我们在渲染右侧属性编辑框的时候,会把属性框中的数值通过此属性传递给当前组件。

args是我们提供给组件的额外配置数据,可以根据需求来使用。

updateValue这个方法将会把自定义属性编辑框中的值通过我们的数据流传递到当前编辑的组件中。

使用自定义编辑框

ScrollTable目录下的config.ts中增加如下配置:

首先我们配置typeFormType.CUSTOMshowLabel的作用是是否显示表单中的label,这里主要是为了让我们的自定义编辑框拥有更大的渲染位置,在componentOptions中的componentType属性配置上组件对象,然后defaultValue就是ScrollTableForm组件中updateValue返回的值以及value所接收的值。

做完以上工作,我们就可以在右侧编辑框查看自定义属性编辑框的效果了。

因为样式和属性有所区别,因此增加自定义样式编辑需要有一些特殊处理,我们在下一篇在讲,在框架的设计之初我们就考虑到组件、属性编辑、工具栏等采用动态注册的方式来增加,一方面为了让框架更加简洁,另一方面也降低了组件自定义的难度。

更新日志

  • 增加动态数据接口处理。
  • 增加了脚本处理请求数据。
  • 优化了部分编辑器BUG。
  • 优化了使用体验。

Vue3拖拽式可视化低代码数据可视化平台
OpenDataV低代码平台新增组件流程

标签:自定义,value,OpenDataV,组件,FormType,编辑框,属性
From: https://www.cnblogs.com/small-bud/p/16747884.html

相关文章

  • 参数绑定和自定义参数绑定
    参数绑定当前端页面提交表单,表单数据对应后端实体类,控制层处理请求时,会将表单数据与实体类对象属性自动绑定(即转为对象)#前端:姓名:<inputname="userName"/><br/>年龄:<inp......
  • 自定义全局操作
    ​​官方文档​​​​官方文档​​​​官方案例​​定义sqlpublicclassFindOneextendsAbstractMethod{@OverridepublicMappedStatementinjectMappedStatemen......
  • python框架中自定义封装logging,一文解决
     为什么需要Logger刚开始写代码可能使用print打印输出就够用了,但是print重定向输出内容非常麻烦,而且无法区分打印日志等级。而logging可以设置打印等级,也可以重定向输......
  • vue3 自定义指令控制按钮权限
    经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制。当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接......
  • Spring源码-populateBean填充bean属性
    一、bean属性注入模式AutowireCapableBeanFactory/***没有自动装配*/intAUTOWIRE_NO=0;/***按照名字自动装配*/intAUTOWIRE_BY_NAME=1;/***按......
  • 按属性值过滤 Firefly 语义切片对象存储 Observables
    按属性值过滤Firefly语义切片对象存储ObservablesImageby恩里克from关注设想我们希望能够观察由属性过滤的反应萤火虫语义切片对象存储事件姓名和价值.[......
  • 0066-Tui-自定义组件
    环境Time2022-08-17Rust1.63.0Tui0.18.0前言说明参考:https://github.com/fdehau/tui-rs/blob/master/examples/custom_widget.rs目标使用tui-rs自定义一个......
  • net List集合 只改变对象中的某一个属性
    classStudent{publicstringId{get;set;}publicstringName{get;set;}}List<Student>list=newList<Student>()list.add(newStudent{Id=1,Name="名......
  • SpringBoot项目中自定义线程池与异步调用案例
    SpringBoot项目中自定义线程池与异步调用案例一、自定义线程池1、配置文件server:port:9006#线程池配置参数task:pool:corePoolSize:10#设置核心线程......
  • Delphi XE MessageDialog- 显示包含自定义消息、对话框类型、按钮集和帮助上下文ID的
    DelphiXEMessageDialog-显示包含自定义消息、对话框类型、按钮集和帮助上下文ID的对话框。-可以同步或异步工作classprocedureMessageDialog(constAMessage:......