首页 > 其他分享 >vue 弹框共用

vue 弹框共用

时间:2024-06-12 14:33:43浏览次数:11  
标签:vue name form cid 新增 弹框 共用 data icon

1.以本人项目为例 修改 新增使用同一个模态框

<el-button type="warning" @click="AddCategory">新增一级分类目录</el-button>

<Dialog ref="myDialog" @updateViews="updateViews" :input="input" :cid="cid"></Dialog>

import Dialog from './Dialog.vue'
	export default {
		components:{
			Dialog,
		},
}

2.点击新增修改按钮时打开模态框

//树节点的内容区的渲染 Function	Function(h, { node, data, store })
			renderContent(h, { node, data, store }) {
			  // console.log('树节点的内容区的渲染 Function',node,data);
			  return (
			    <span class="custom-tree-node">
			      <span class='name'>{data.name}</span>
			      {data.type == 1 ? <span style="width:300px;disply:flex;justify-content: space-between;">
			        <el-button class='mini' on-click={() => this.append(data)} icon="el-icon-plus">新增</el-button>
			        <el-button class='mini' on-click={() => this.update(node, data)} icon="el-icon-edit">修改</el-button>
			        <el-button class='mini' type="danger" on-click={() => this.remove(node, data)} icon="el-icon-delete">删除</el-button>
			      </span> : <span>
			        <el-button class='mini' on-click={() => this.update(node, data)} icon="el-icon-edit">修改</el-button>
			        <el-button class='mini' type="danger" on-click={() => this.remove(node, data)} icon="el-icon-delete">删除</el-button>
			      </span>}

			    </span>);
			},

3. 定义新增修改方法,打开模态框,并且给模态框设置标题

// AddCategory 新增一级分类接口
			AddCategory(){
				// 1.打开对话框
				this.$refs.myDialog.dialogVisible = true;
				// 2.新增分类
				// this.insertCategory();
				// 给弹框设置标题
				this.$refs.myDialog.title = '新增一级分类'
				
			},
			//新增子类---------------------------------
			append(data) {
				console.log('新增子类');
				// 1.打开对话框
				this.$refs.myDialog.dialogVisible = true;
				// 给弹框设置标题
				this.$refs.myDialog.title =`新增${data.name}的分类子目录`;
				// this.input = {name:data.name,cid:data.cid};
				this.cid = data.cid;
			},

4.在点击按钮时,修改模态框状态,默认dialogVisible: false,使用this.$refs.myDialog.dialogVisible = true;打开模态框,无论修改还是增加,都是点击模态框中的确认按钮,出触发onsubmit方法.根据把标题字段区别,判断操作为新增或者修改。在最后需要通知父组件更新视图。

onsubmit() {
				if(this.title === "新增一级分类")
				{
					// 1.新增接口
					this.insertCategory(this.form.name);
					
				}else if(this.title === "修改分类名称"){
					// 1. 修改接口
					this.updateCategory(this.form.id,this.form.name);
				}else{
					// 新增子类目接口
					this.insertItemCategory(this.form.name,this.cid);
					console.log("---------",this.form.name,this.cid)
				}
				// 2.关闭弹框
				this.dialogVisible = false;
				//清空弹框
				this.form = [];
				// 通知父组件更新视图
				this.$emit('updateViews');
			},

 

--------------父组件中,更新视图
<!-- 弹框--添加修改内容---弹框展示 -->
			<Dialog ref="myDialog" @updateViews="updateViews" :input="input" :cid="cid"></Dialog>


// 更新视图
			updateViews(){
				this.itemCategory();
			},
			

5.修改时,已有数据需要回显,在主页面中定义input,使用对象传递参数,在弹框页面,使用props接收父组件传递的参数。

-------------------主页面
return {
				input: '',
				cid: '',
				data: [{
					id: 1,
					name: '一级 1',
					children: [{
						id: 4,
						name: '二级 1-1'
					}]
				}]
			}
---------------------弹框页面
export default {
		props:['input','cid'],
}
----------------监听事件,数据发生变化时,调用

watch:{
			input(val){
				this.form.name = val.name;
				this.form.id = val.id;
			}	
		},

标签:vue,name,form,cid,新增,弹框,共用,data,icon
From: https://blog.csdn.net/qq_55961367/article/details/139603989

相关文章

  • vue-json-excel 导出功能
    导出功能1.在vue中使用以下命令安装excel插件npminstallvue-json-excel-S2.在main.js文件中配置全局组件importJsonExcelfrom'vue-json-excel'Vue.component('downloadExcel',JsonExcel)3.在需要导出的.vue页面使用 <download-excel></download-excel><downl......
  • Vue配置项之生命周期(组件生命周期)
    LifecycleHooks首先说明一下,本人是前端小学生级别的菜鸡,吐槽的话请口下留情,在评论区指出错误或者补充不足,我会很喜欢,互喷不会进步,相互指点才会。。。。谢谢大家啦目录LifecycleHooks目录创建阶段(CreationPhase)beforeCreate(创建前):created(创建后):挂载阶段(MountingPha......
  • Vue全局组件
    全局组件首先说明一下,本人是前端小学生级别的菜鸡,吐槽的话请口下留情,在评论区指出错误或者补充不足,我会很喜欢,互喷不会进步,相互指点才会。。。。谢谢大家啦目录全局组件目录内置模板引入模板优点场景缺点......
  • Vue3——ref定义响应式数据
    ref作用ref:定义响应式变量,既可定义基础类型数据,也可以定义对象类型。语法格式:lettemp=ref(初始值)返回值:temp是一个RefImpl的实例对象,简称ref对象,ref对象的value属性是响应式。注意点:JS/TS中使用变量temp操作数据时,需要temp.value,但是在模板中不需要temp.value,直接......
  • vue3 dom ref 实现,子组件ref实现,defineExpose暴露子组件作用域
    示例代码App.vue<template><header><imgalt="Vuelogo"class="logo"src="@/assets/logo.svg"width="125"height="125"/><divclass="wrapper"><HelloWorld......
  • 在Vue3中高级前端是这样给按钮添加loading效果的
    前言一个页面有多个按钮,每个按钮都要添加loading效果,高级前端是如何在Vue3控制按钮是否显示loading效果的呢?普通前端我们先来看看初级普通前端平常是怎么给按钮添加loading效果的:<scriptsetup>import{ref}from'vue'constasyncFn=()=>newPromise(resolve=>......
  • 升级babel7后,直接引用element-ui中没有暴露出来的组件image-viewer.vue导致的打包错误
    问题&解决方案升级babel7后,原先代码中像这样直接引用element-ui组件的地方,出现了报错Moduleparsefailed:Unexpectedtoken(1:0)Youmayneedanappropriateloadertohandlethisfiletype.经过一番排查,我发现问题出在element-ui并未直接暴露该组件,导致直接引用时......
  • vue tree展开自动获取焦点
     打开弹窗设置默认焦点html代码重点:设置 node-key="id"  ref="table_dedh"<el-tree:data="dedhtreeData"node-key="id"ref="table_dedh":props="{children:'children',label:'label'}"@no......
  • ThingsBoard前端Vue版本开源啦!!!!
    ThingsVue......
  • 搭建vue项目准备-配置git信息
    搭建vue项目准备1、node-v2、npm-v3、git-versionnpm淘宝镜像1、npmconfigsetregistryhttps://registry.npm.tobacco.org/设置淘宝镜像2、npmconfiggetregistry查看镜像地址vscode插件vetureslint安装clinpminstall-g@vue/clivue--versi......