基于element的表单渲染器 (el-form-renderer)

31 篇文章 0 订阅
11 篇文章 0 订阅

GitHub地址: @femessage/el-form-renderer

文档链接: https://femessage.github.io/el-form-renderer/#/Components 里面详细的说明各个参数的用法

我觉得找再多的博客文章 官方文档是最好的解释

基于 element-ui 封装的表单渲染器,完整继承了 element 的属性定义,并进行了简单扩展,从而用户能够通过使用一段预设的数据渲染出一个完整的 element 表单。但它不仅仅是 element-ui ,甚至不仅仅是表单。

Element-UI 表单链接地址: https://element.eleme.cn/#/zh-CN/component/form

Element-UI 的Form Attributes、Methods、Events等 el-form-renderer完全继承

<el-form-renderer
	label-width="130px"
	label-position="right"
	ref="form"
	:content="content"
	inline
/>

Props

  • 支持 el-form 上的所有属性。
  • content[ObjectArray] 定义表单的内容,每一个 Object 代表一个原子表单 el-input, el-select, ...,一切 el-form-item 上的属性都在此声明,而对于 el-input 等之上的属性在 $el 属性上进行声明,该 Object 上还存在其他属性,例如: id, type,label, options可选的,等。还有hidden定义其是否隐藏等属性

Eg:

content = [
    {
      type: 'input',
      id: 'accountId',
      label: '账号ID',
      disabled: true, // 不可编辑
    },
    {
      type: 'input',
      id: 'operator',
      label: '运营者姓名',
      rules: [{ validator: ******, trigger: 'blur' }], // validator 定义规则
    },
    {
      component: ******, // 可以引入组件,
      id: 'identityCard',
      label: '身份证',
      el: {
        mate: 'q_identityCardTails',
        data: {},
      },
    },
    {
      type: 'select', // 下拉框 remote 获取下拉框的值
      id: 'category',
      label: '账号分类',
      remote: {
        url: '/fee/subsidy/category',
        onResponse: (data: string[]): { value: string }[] => {
          console.log('data: ', data);// 可以打印一下
          return data.map((value: string) => ({ value }));
        },
      },
    },
  ];

使用 remote 属性,简单配置一下远端接口 url,即可自动发起请求并更新 options 属性

remote 在内部做了什么?

export default {
  watch: {
    remote({url}) {
      this.$axios.get(url).then(resp => setOptions(id, resp.data))
    }
  }
}

这篇文章更好的理解 有好的demo: https://juejin.cn/post/6844903897853591566

  • 表单项动态显示或隐藏
  • 表单数据联动
  • 表单输入/输出数据格式化
  • 非常规表单项的处理
  • 复杂的表单验证
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-form-renderer是一个基于Element UI的渲染,用于简化的开发和校验。而el-form-item是el-form-renderer中的一个组件,用于包裹项并进行校验。 在el-form-item中,可以通过rules属性来定义校验规则。rules属性是一个数组,每个元素都是一个对象,用于描述一个校验规则。每个规则对象包含以下属性: 1. required(必填):指定该字段是否为必填项,可以是一个布尔值或者一个函数。如果是函数,则根据函数的返回值来确定是否必填。 2. validator(自定义校验函数):指定一个自定义的校验函数,该函数接收三个参数:rule(当前规则对象)、value(当前字段的值)和callback(回调函数)。在自定义校验函数中,可以根据具体的业务逻辑进行校验,并通过调用callback回调函数来返回校验结果。 3. trigger(触发方式):指定触发校验的方式,默认为'change',即在字段值改变时触发校验。还可以设置为'blur'(失去焦点时触发校验)或'submit'(提交时触发校验)。 4. message(错误提示信息):指定校验失败时的错误提示信息。 以下是一个示例代码,展示了如何在el-form-renderer中使用el-form-item进行校验规则的定义: ```html <el-form-renderer :model="formData" :rules="formRules"> <el-form-item label="用户名" prop="username"> <el-input v-model="formData.username"></el-input> </el-form-item> </el-form-renderer> ``` ```javascript data() { return { formData: { username: '' }, formRules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 6, max: 12, message: '用户名长度在6到12个字符之间', trigger: 'blur' } ] } }; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值