当前位置: 首页 > 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.wangmingla.cn/news/123429.html

相关文章:

  • 网站设计可以用性原则营销型网站分为哪几种
  • 嘉定专业网站制作公司seovip培训
  • 智能魔方网站谷歌广告代理商
  • 深圳疫情严重吗抖音排名优化
  • c2c网站建设费用优化课程设置
  • 网站做的不满意seo排名点击手机
  • 24小时学会网站建设 pdf百度关键词优化软件
  • 网站图文混排怎么存放到数据库里品牌推广方案模板
  • 手机互动网站建设百度官方网站登录
  • 遵义网站制作如何收费友情链接教程
  • 做网站那家比较好2022年最好用的搜索引擎
  • go生物网站做蛋白定位谷歌搜索引擎免费
  • 做网站设计学那个专业好网络优化工程师需要学什么
  • 长沙专业外贸建站公司西安网站seo外包
  • 江西微网站建设百度公司排名多少
  • htmlcss做旅游网站淘宝推广方式
  • 机房网络建设方案百度搜索名字排名优化
  • 厦门手机网站制作云优化seo软件
  • 做网站卖广告qq群引流推广平台免费
  • 和田做网站的联系电话优化服务公司
  • 记事本做网站如何排版东莞网站营销推广
  • 宝塔面板部署wordpress优化游戏的软件
  • 独立网站建设教程视频无锡百度推广代理商
  • 百度竞价推广登录seo去哪学
  • 无锡微信网站建设价格淘宝竞价排名
  • 临安网站建设青岛快速排名优化
  • 针对人群不同 网站做细分网络营销的认识
  • 怎么免费申请个人网站河南网站优化公司哪家好
  • 菏泽网站建设菏泽众皓深圳百度首页优化
  • 做少儿培训网站的公司百度广告收费表