当前位置: 首页 > news >正文

网站网页转小程序教程企业局域网组建与网站建设

网站网页转小程序教程,企业局域网组建与网站建设,响应式视频网站模板下载,旅游网站建设的组织性之前 Vue3 只停留在理论&#xff0c;现在项目重构&#xff0c;刚好可以系统的实战一下&#xff0c;下面是封装了一个抽屉表单组件&#xff0c;直接在父组件中通过调用子组件的方法打开抽屉&#xff1a; 父组件&#xff1a; <template><div id"app"><…

之前 Vue3 只停留在理论,现在项目重构,刚好可以系统的实战一下,下面是封装了一个抽屉表单组件,直接在父组件中通过调用子组件的方法打开抽屉:

父组件:

<template><div id="app"><div @click="getChildValue">open</div><custom-formref="childRef":fields="fields":form="form":rules="rules":saveForm="saveForm"></custom-form></div>
</template><script setup>
import CustomForm from "@/components/CustomModelForm";
import { reactive } from "vue";const formData = reactive({form: {name: "",email: "",date: "",password: "",},fields: [{prop: "name",label: "Name",component: "el-input",props: { placeholder: "Enter your name" },},{prop: "email",label: "Email",component: "el-input",props: { placeholder: "Enter your email" },},{prop: "date",label: "Date",component: "el-date-picker",props: {placeholder: "Enter your date",format: "YYYY-MM-DD",valueFormat: "YYYY-MM-DD",},},{prop: "password",label: "Password",component: "el-input",props: { placeholder: "Enter your password", type: "password" },},],rules: {name: [{ required: true, message: "Please input your name", trigger: "blur" },],email: [{ required: true, message: "Please input your email", trigger: "blur" },],password: [{required: true,message: "Please input your password",trigger: "blur",},],},
});
const { form, fields, rules } = toRefs(formData);
const childRef = ref(null);function getChildValue() {childRef.value?.open();
}function saveForm() {console.log(form.value);
}
</script>

子组件:

<template><el-drawerv-model="drawer":title="title":size="width":before-close="resetForm"><el-form :model="form" :rules="rules" ref="customForm" label-width="auto"><el-form-itemv-for="field in fields":key="field.prop":label="field.label":prop="field.prop"><component:is="field.component"v-bind="field.props"v-model="form[field.prop]"/></el-form-item></el-form><template #footer><div style="flex: auto"><el-button type="primary" @click="submitForm">保存</el-button><el-button @click="resetForm">取消</el-button></div></template></el-drawer>
</template><script setup>
const props = defineProps({// 抽屉标题title: {type: String,default: "标题",},// 表单元素 JSONfields: {type: Array,required: true,},// 表单数据form: {type: Object,required: true,},// 表单校验规则rules: {type: Object,default: () => ({}),},// 设置抽屉宽width: {type: String,default: "30%",},// 保存表单方法saveForm: {type: Function,default: () => {},},
});const drawer = ref(false); // 控制抽屉显隐
const customForm = ref(null); // 表单 ref// 提交表单
const submitForm = () => {customForm.value.validate((valid) => {if (valid) {props.saveForm();resetForm();} else {console.log("error submit!!");return false;}});
};// 打开抽屉
function open() {drawer.value = true;
}// 关闭抽屉
const resetForm = () => {customForm.value.resetFields();drawer.value = false;
};defineExpose({open,
});
</script>

这里主要用来 ref 和 defineExpose,其中 ref 获取了子组件的实例,而 defineExpose 是一个用于在 <script setup> 语法糖中暴露组件内部的属性或方法给父组件的函数。通过使用 defineExpose,你可以控制哪些属性和方法可以被外部访问,从而增强组件的封装性和安全性。

http://www.15wanjia.com/news/162046.html

相关文章:

  • 全功能电子商务网站建设长沙专业公司网站建设源头
  • 可以做 描文本链接的网站网络营销推广代理
  • 望京网站建设巨耀网站建设公司
  • 不需要写代码的网站开发软件门户网站建设课程设计
  • 域名命名网站门店库存管理软件
  • 设计师投稿网站提高网站转化率
  • 镇江网站建设推广app外包公司推荐
  • 长沙网站优化外包服务wordpress文章归档模板
  • 网站建设公司薪酬微网站如何建设方案
  • 小程序和网站开发难度用手机下载地图到内全卡
  • 货架网站开发百度小程序异常怎么办
  • 自己想开个网站怎么弄最新传奇网页游戏排行榜
  • 网站制作价格权威乐云践新无货源网店
  • 团购网站设计建网站 外贸
  • 西安市建网站凡科建站的应用场景
  • dw做网站是静态还是动态企业网站建设工作总结
  • 菜鸟网络属于哪个公司郑州网站seo外包公司
  • 一点科技官方网站马云不会代码怎么做的网站
  • 武夷山网站推广网站seo收录
  • 网站开发绩效考核与薪酬项目分享网
  • 邯郸wap网站建设公司台州建站程序
  • 高安做网站网站搜索引擎优化是什么
  • 做网站如何找广告商泉州市建设局网站公示
  • 建设现金分期网站wordpress如何添加一级目录
  • 西城h5网站建设哪里有做效果图的网站
  • 平度网站建设费用获胜者网站建设
  • 深圳网站建设qwyx100赣州电脑网络公司
  • 廊坊网站建设公司哪家好查询建设公司业绩网站
  • 建设农产品网站总结ppt海口建设公司网站
  • 怎么做足球网站软件技术的就业方向