首页 > 其他分享 >富文本组件 非Element Plus表单组件 自定义组件 触发表单校验

富文本组件 非Element Plus表单组件 自定义组件 触发表单校验

时间:2022-11-16 11:56:37浏览次数:53  
标签:vue const 自定义 Element Plus 组件 表单

    项目中有很多自己封装的组件,如富文本组件,文件上传,图片上传等。而这些组件在表单中常常会在新增和编辑的场景应用。而且Element Plus官网展示demo都是基于Element Plus表单组件的,并没有演示非Element Plus表单组件,下面代码将演示如何实现非Element Plus的Vue组件触发ElForm的表单校验

自定义组件代码: ax-input-test.vue
<template>
    <input v-model="value" placeholder="请输入">
</template>
<script lang="ts">
import { computed } from 'vue'
import { useFormItem } from 'element-plus'
export default {
  name: "ax-input-test",
  props: {
    modelValue: {
      type: String,
      default: ''
    }
  },
  emits: ['update:modelValue'],
  setup(props: any, { emit}) {
    const { formItem } = useFormItem()
    const value = computed({
        get() {
            return props.modelValue
        },
        set(val) {
            emit('update:modelValue', val)
            formItem?.validate('blur')
        }
    })
    return {
        value
    }
  }
}
</script>

使用组件的代码edit-user-confirm.vue

<template>
            <div class="body">
                <el-form
                    ref="formRef"
                    :model="userForm"
                    label-width="120px"
                    :rules="formRules"
                >
                    <el-form-item label="昵称:" prop="nickName">
                        <ax-input-test
                            class="content-input"
                            v-model="userForm.nickName"
                            placeholder="请输入您的昵称"
                        ></ax-input-test>
                    </el-form-item>
                    <div class="bottom-box">
                        <div class="btn-box">
                            <el-button type="primary" @click="onSubmit(formRef)">确认</el-button>
                        </div>
                    </div>
                </el-form>
            </div>
</template>

<script lang="ts">
import {reactive, ref, defineComponent} from 'vue';
import AxInputTest from '@/components/ax-input-test.vue'
export default defineComponent({
    name: "edit-user-confirm",
    components: {
        AxInputTest
    },
    emits: ['closeConfirm', 'saved'],
    setup(props, {emit}) {
        const formRules = reactive({
            nickName: [
                {
                    required: true,
                    message: '昵称不能为空',
                    trigger: 'blur',
                }
            ]
        });
        const userForm = reactive({
            nickName: ''
        });
        const onSubmit = (formRef) => {
            formRef.validate((valid) => {
                if (valid) {
                    //保存数据到接口
                }
            });
        };
        // 取消
        const onCancel = () => {
            emit('closeConfirm');
        }
        const formRef = ref(null);
        return {
            userForm,
            formRules,
            onSubmit,
            formRef,
            onCancel
        }
    }
})
</script>

 

标签:vue,const,自定义,Element,Plus,组件,表单
From: https://www.cnblogs.com/wangacan/p/16895397.html

相关文章

  • web技术分享| 日期选择限制组件二次封装
    vue3+elementplus的项目项目需求:开始时间限制:存在某天之前的时间禁选结束时间限制:当天之后时间禁选开始时间与结束时间的跨度最大不超过一年使用elementplus的......
  • c语言自定义输出小数点位数_c语言double类型默认输出小数几位
    C语言中常用的小数有两种类型,分别是float或double;float称为单精度浮点型,double称为双精度浮点型。不像整数,小数没有那么多幺蛾子,小数的长度是固定的,float始终占用4个......
  • UI组件DevExpress ASP.NET Core v22.1亮点 - 甘特图、UI组件全新升级
    DevExpressASP.NET WebFormsControls拥有针对Web表单(包括报表)的110+种UI控件,DevExpressASP.NETMVCExtensions是服务器端MVC扩展或客户端控件,由轻量级JavaScript小部......
  • 面试官:你是怎样进行react组件代码复用的
    mixinMixin设计模式Mixin(混入)是一种通过扩展收集功能的方式,它本质上是将一个对象的属性拷贝到另一个对象上面去,可以拷贝多个属性到一个对象上,为了解决代码复用问题。常......
  • 第四十八章 开发自定义标签 - 在action中使用csr标签
    第四十八章开发自定义标签-在action中使用csr标签在action中使用<csr>标签在规则的操作定义中,可以使用一些附加标记。本节描述:<csr:default>Tag<csr:children>......
  • 工作流引擎表单设计器好用吗?
    随着大数据时代的到来,采用低代码开发平台提升开发效率是比较有利的途径之一。作为低代码平台的功能之一,工作流引擎表单设计器都有哪些优势特点?如何选择表单设计器?跟着小编......
  • C/C++ Qt MdiArea 多窗体组件应用
    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所......
  • APICloud AVM 组件开发规范
    一、AVM组件介绍AVM (Application-View-Model)跨端框架是一个移动优先的高性能跨端JavaScript框架,支持一次编写多端渲染。它提供更趋近于原生的编程体验,通过简洁......
  • webpack简介及自定义插件
    webpack 是一个用于现代JavaScript应用程序的 静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependencygraph),然......
  • vue自定义事件的基本使用
    因为新项目要写114个字段,所以今天试着封装了一个dialog表单组件在优化关闭和提交按钮的时候,可以在父组件写事件,这时候自定义事件就能登场了我先是这么操作了一番父组件:......