首页 > 其他分享 >【Vue 表单类组件封装与 v-model 简化代码】

【Vue 表单类组件封装与 v-model 简化代码】

时间:2024-11-19 10:49:39浏览次数:3  
标签:MyForm Vue 封装 表单 组件 model

文章目录

什么是 Vue 表单类组件?

Vue 表单类组件是一种将表单元素(如输入框、复选框、单选框等)封装成可复用的组件的方式。这些组件可以在不同的页面和项目中使用,提高了代码的可维护性和可重用性。

封装 Vue 表单类组件

步骤1:创建一个表单组件

创建一个 Vue 组件,命名为 MyForm,并在该组件内定义一个表单元素,例如文本输入框。

<template>
  <div>
    <input type="text" v-model="inputValue" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: "",
    };
  },
};
</script>

步骤2:使用 v-model 简化数据绑定

上述代码中使用了 v-model 指令将输入框的值与 inputValue 数据属性进行双向绑定。在父组件中可以使用 v-model 控制该表单元素。

步骤3:将表单组件封装

MyForm 组件封装成可复用的表单组件。可以通过添加 propsemits 属性来实现。

<template>
  <div>
    <input type="text" v-model="inputValue" />
  </div>
</template>

<script>
export default {
  props: {
    value: String, // 接收父组件的值
  },
  emits: ["input"], // 发射 input 事件
  data() {
    return {
      inputValue: this.value,
    };
  },
  watch: {
    value(newValue) {
      this.inputValue = newValue; // 监听 value 变化
    },
    inputValue(newValue) {
      this.$emit("input", newValue); // 触发 input 事件
    },
  },
};
</script>

步骤4:在父组件中使用表单组件

在父组件中使用封装的表单组件 MyForm 并使用 v-model 来简化代码。

<template>
  <div>
    <my-form v-model="formData" />
  </div>
</template>

<script>
import MyForm from "./MyForm.vue";

export default {
  components: {
    MyForm,
  },
  data() {
    return {
      formData: "",
    };
  },
};
</script>

上述代码中将 MyForm 组件引入到父组件中,并使用 v-modelformData 与表单组件的值进行双向绑定。在父组件中可以访问和修改表单的值。

标签:MyForm,Vue,封装,表单,组件,model
From: https://blog.csdn.net/qq_66726657/article/details/143876169

相关文章

  • 【vue】项目迭代部署后 自动清除浏览器缓存
    前言:vue项目打包部署上线后,因浏览器缓存问题,导致用户访问的依旧是上个迭代批次的旧资源,需要用户手动清除缓存才能更新至最新版本,影响用户体验。解决方法:html根文件添加以下标签<metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"con......
  • 【开题报告】基于Springboot+vue乡村信息化管理系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,信息化已成为推动社会进步和经济发展的重要力量。在乡村地区,传统的管理方式逐渐暴露出效率低下、信息不透明等问题,严重制约了......
  • Let'sGoFurther - Chapter 12: User Model Setup and Registration
     zzh@ZZHPC:/zdata/Github/greenlight$migratecreate-seq-ext=.sql-dir=./migrationscreate_user_table/zdata/Github/greenlight/migrations/000004_create_user_table.up.sql/zdata/Github/greenlight/migrations/000004_create_user_table.down.sql CREATET......
  • Vue+ElementUI 导出为PDF文件
    在ElementUI中导出PDF通常涉及将页面上的DOM元素转换为PDF格式的文件。这一过程可以通过结合使用 html2canvas 和 jsPDF 这两个JavaScript库来实现。步骤:1、安装依赖在项目中安装html2canvas和jsPDF这两个库。可以通过npm进行安装:npminstallhtml2canvasjspdf2、创建......
  • html5表单属性的用法
    文章目录HTML5表单详解与代码案例一、表单的基本结构二、表单元素及其属性三、表单的高级应用与验证四、表单布局与样式HTML5表单详解与代码案例HTML5表单是网页中用于收集用户输入并提交到服务器的重要元素,广泛应用于登录页面、客户留言、搜索产品等场景。本文将......
  • django的model时间怎么转时间戳
    在Django中,模型(Model)中的日期和时间字段通常使用Django的DateTimeField或相关字段来存储。如果你想要将这些日期时间字段转换为Unix时间戳(即自1970年1月1日以来的秒数),你可以使用Python的datetime模块中的timestamp()方法。以下是一个例子,展示了如何将Django模型中的DateTim......
  • vue2-组件化编程
    模块:向外提供特定功能的js呈现组件:用来实现局部(特定)功能效果的代码集合模块化:当应用中的js都以模块来编写的,那这个应用就是一个模块化的应用组件化:当应用中的功能都是多组件的方式来编写的,那这个应用就是一个组件化的应用编写组件-非单文件组件非单文件组......
  • copying model and updating field of pydantic
    copyingmodelandupdatingfieldhttps://github.com/pydantic/pydantic/discussions/2710 fromdatetimeimportdatetimefromtypingimportList,OptionalfrompydanticimportBaseModel,FieldclassUser(BaseModel):id:intclassConfig:......
  • 大型语言模型综述 A Survey of Large Language Models
    文章源自2303.18223(arxiv.org)如有侵权,请通知下线这是一篇关于大语言模型(LLMs)的综述论文,主要介绍了LLMs的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面,具体内容如下:摘要——自从图灵测试在20世纪50年代被提出以来,人类已经探索了机器对语言智能的......
  • Express的使用笔记8 引入验证中间件来给表单添加验证规则~
    前面已经将数据成功写入了数据库了,接下来就开始探讨接口传递参数的校验咯~自己封装虽然灵活,但也常常架不住有现成的,既灵活又方便,比如:express-valiation官方文档地址:https://express-validator.github.io/docs/guides/schema-validation先安装咯!npmiexpress-valiation引入......