vue3大事件项目3

devtools/2024/10/15 22:10:07/

弹框验证

先准备变量:

const formModel = ref({

  cate_name: '',

  cate_alias: ''

})

还有规则:

const rules = {

  cate_name: [

    { required: true, message: 'please input name', trigger: 'blur' },

    {

      pattern: /^\S{1,10}$/,

      message: 'must be 1-10',

      trigger: 'blur'

    }

  ],

  cate_alias: [

    { required: true, message: 'please input second name', trigger: 'blur' },

    {

      pattern: /^[a-zA-Z0-9]{1,15}$/,

      message: 'must be 1-15 number or aphlet',

      trigger: 'blur'

    }

  ]

}

1. form表单绑定变量和规则:<el-form :model="formModel" :rules="rules">

2.input框配置  v-model

 <el-input 

          v-model="formModel.cate_alias"

        ></el-input>

3. el-form-item标签配置prop,用于接收参数<el-form-item label="分类别名" prop="cate_name">

prop用于指定表单项所对应的Vue实例数据对象中的属性名。当你需要在表单提交时获取或验证表单项的值,就需要用到prop属性。

编辑需要回显,表单数据需要初始化

编辑时,数据回显

添加时为空

封装的组件当中

javascript">//组件对外暴露一个方法open,基于open传来的参数,区分是添加还是编辑
//open({}) => 表单没有渲染,说明是添加
//open({id,cate_name,...}) => 表单需要渲染,说明是编辑
//open调用后,可以打开弹窗
const open = (row) => {dialogVisible.value = true// formModel.value展开//添加 -> 传空值,相当于重置表单内容//编辑 -> 存储需要回显的数据formModel.value = { ...row }
}

基于传过来的表单数据,进行标题控制,有 id 的是编辑,没有的是添加,注意最外层加双引号

javascript"> <el-dialogv-model="dialogVisible":title="formModel.id ? 'edit' : 'add'">

添加或编辑完成后提交数据

1.封装接口:添加文章分类,post和编辑文章分类,put

javascript">//添加文章分类,post
export const artaddChannelService = (data) => request.post('/my/cate/add', data)
//编辑文章分类,put
export const arteditChannelService = (data) =>request.put('/my/cate/info', data)

2.为按钮绑定点击事件onSubmit

javascript">     <el-button type="primary" @click="onSubmit"> Confirm </el-button>

3.封装onSubmit

先校验,之后判断open方法有没有传id过来,有就是编辑,没有就是添加

javascript">const onSubmit = async () => {//校验,检验通过就执行下一步await formRef.value.validate()const isEdit = formModel.value.idif (isEdit) {await arteditChannelService(formModel.value)ElMessage.success('success edit')} else {await artaddChannelService(formModel.value)ElMessage.success('success add')}
}

4.在channelEdit里导入封装好的接口

javascript">import { arteditChannelService, artaddChannelService } from '@/api/article.js'

5.效果

6.备注:如果弹框不出现,就在最上面导入

javascript">import 'element-plus/dist/index.css'

7.关弹层

javascript"> //关弹窗dialogVisible.value = false

8.通知父组件

defineEmits` 是一个组合 API,用于定义父组件可以监听的子组件事件。

javascript">const emit = defineEmits(['success'])

当前的Vue组件正在向其父组件发出一个名为 'success' 的自定义事件。

javascript">  //通知父组件emit('success')

为了响应这个事件,父组件需要在其模板中使用 v-on 指令(或者简写为 @)来监听这个事件。

父组件:调用子组件

javascript">  <channel-edit ref="dialog" @success="onSuccess"></channel-edit>

父组件:封装方法(getChannelList()是父组件已经封装好的方法)

javascript">const onSuccess = () => {getChannelList()
}

9.完成:可以成功添加或修改,并且自动渲染


​​​​​​​


http://www.ppmy.cn/devtools/3213.html

相关文章

ubuntu22.04 启用 root登录

1&#xff0c;设置 root密码 普通用户输入如下命令给 root 设置密码 sudo passwd root 根据提示设置密码。 2&#xff0c;允许 root 登录 vim /etc/pam.d/gdm-password 以及 vim /etc/pam.d/gdm-autologin 注释两个文件中如下图所示的代码 3&#xff0c;允许 ssh 方式 ro…

爱普生发布一款16位MCU产品用于大电流LED驱动

精工爱普生发布一款内置Flash存储器的16位微控制器S1C17M13 该新品可以提供最大56mA的驱动电流用于驱动发光二极管(LED) 以往爱普生的微处理器大多继承了液晶驱动器电路&#xff0c;但近来随着工业自动化和家用设备使用7段LED显示的数量大幅增加&#xff0c;爱普生也推出了对应…

【c基础】文件操作

1.fopen和fclose函数 函数原型 FILE *fopen(const char *path, const char *mode); 参数解释&#xff1a; 返回值&#xff1a;fopen打开成功&#xff0c;则返回有效file的有效地址&#xff0c;失败返回NULL。path是文件路径&#xff0c;可以相对路径&#xff0c;可以绝对路径…

智能生活新体验:小米香薰加湿器技术解码

在现代家居生活中&#xff0c;科技与舒适性日益交织&#xff0c;智能家居产品成为提升生活品质的重要工具。小米香薰加湿器作为一款集科技与生活美学于一体的产品&#xff0c;其独特的设计和多功能性受到了广泛欢迎。今天&#xff0c;我们就来详细拆解这款融合了科技与香薰元素…

hbase基础(二)

HBase第二天 名称空间 namespace&#xff1a;名称空间默认hbase有两个名称空间&#xff0c;default、hbasedefault名称空间是默认创建表的位置&#xff0c;hbase是专门存放系统表的名称空间&#xff08;namespace、meta&#xff09;管理命名空间指令 create_namespace 命名空…

喜讯 | “泰迪杯”数据挖掘挑战赛再次进入计算机类竞赛指数榜单

4月15日&#xff0c;第61届中国高等教育博览会在福州召开。在教师教学发展与创新人才培养论坛上&#xff0c;浙江大学何钦铭教授代表《全国普通高校大学生计算机类竞赛指数》专家工作组发布了最新一年的竞赛指数。据悉&#xff0c;今年的竞赛项目清单包含了28项赛事&#xff0c…

python 头文件怎么写

本文主要以python2为例。首先介绍一下Python头文件的编程风格&#xff0c;然后再给大家详细介绍import部分的基本用法。这两个部分就是Python中头文件的组成模块。 编程风格 #!/usr/bin/env python #在文件头部 ( 第一行 ) 加上 设置 Python 解释器 # -*- coding: utf…

swift代码集合

码云地址 swift-h5 1.实现了用h5开发iOS程序&#xff0c;封装了一个通用的h5加载类WebVC 2.封装了一个js和原生交互的通用js类common.js 简易HUD 1.自实现的一个文本展示和加载等待 网络请求 1.自实现的一个网络请求模块&#xff0c;实现get、post、上传下载等功能