首页 > 其他分享 >vue~封装一个文本框添加与删除的组件

vue~封装一个文本框添加与删除的组件

时间:2023-09-26 17:14:08浏览次数:39  
标签:vue 封装 删除 tags 文本框 dic 添加 组件

标签组件的效果如下

组件作用

  • 这是一个div,包含了两个文本框,后面是添加和删除按钮
  • 添加按钮复制出新的div,除了文本框没有内容,其它都上面一样
  • 删除按钮将当前行div删除

组件实现

<template>
  <div>
    <template v-for="(item,index) in tags">
      <el-row :gutter="4" style="margin:5px;">
        <el-col :span="8">
          <el-input v-model="item.authorName" placeholder="作者名称"/>
        </el-col>
        <el-col :span="8">
          <el-input v-model="item.authorUnit" placeholder="作者单位名称"/>
        </el-col>
        <el-col :span="4">
          <el-button type="text" @click="addAuthor">添加</el-button>
          <span style="padding:2px;">|</span>
          <el-button type="text" @click="delAuthor(index)">删除</el-button>
        </el-col>
      </el-row>
    </template>
  </div>
</template>


<script>
export default {
  name: "AuthorUnit",
  props: {dic: {type: Array, default: []}},
  data() {
    return {
      tags: [],
    };
  }, created() {
    this.tags = this.dic || [];//关键字初始化,dic的值来自于父组件(调用它的组件叫父组件)
  },
  methods: {
    addAuthor() {
      this.tags.push({authorName: '', authorUnit: ''});
    },
    delAuthor(index) {
      this.tags.splice(index, 1);
    },
  },
}
</script>

调用组件,为组件传默认值

<el-form-item label="作者信息" prop="articleAuthorList">
  <author-unit v-model="form.articleAuthorList" :dic="form.articleAuthorList"/>
</el-form-item>

测试代码

提交之后,将出现当前你添加的这个列表的对象,对接后端接口,将这个数组POST到后端即可,如图所示:

标签:vue,封装,删除,tags,文本框,dic,添加,组件
From: https://www.cnblogs.com/lori/p/17730643.html

相关文章

  • VUE 3.0使用Tinymce编辑器
    本人使用的IDEA开发工具参考文档:1.官方文档2.中文文档一、使用npm安装Tinymce。我这里是指定了版本号的npm install [email protected]@tinymce/[email protected]二、修改路径,加汉化1、将下载好的tinymce,从node_modules复制到public文件夹里   2、汉化(......
  • vue~封装一个文本框标签组件
    用到的技术父组件向子组件的传值类型检查和默认值:您可以为props指定类型检查和默认值。这可以确保传递给子组件的数据符合期望的类型,以及在没有传递数据时具有合理的默认值。例如:props:{message:{type:String,default:'DefaultMessage'},count:{......
  • 【vue2】实现数字纵向滚动效果(计时器效果)
    需求:在页面中显示一个数字,并在进入视口时显示计时器滚动效果: 效果如上↑ 新建组件ScrollNumber.vue:<template><divstyle="display:inline-flex;justify-content:flex-start;align-items:center;"><divv-for="(item......
  • VUE~~vue-grid-layout
    1.vue2版本yarnaddvue-grid-layoutimport{GridLayout,GridItem}from"vue-grid-layout";2.vue3版本[email protected]'vue-grid-layout';app.use(VueGridLayout);......
  • vue3 模糊搜索 不区分大小写 多选框 element plus
    ```javascript<divclass="select-part"ref="selectRef"><divclass="check-type"><inputtype="text"class="check-type-title":placeholder="placeholder"@focus="onFo......
  • Vue3 组件基础:轻松掌握前端开发新技能!
    基本实例这里有一个Vue组件的示例://创建一个Vue应用constapp=Vue.createApp({})//定义一个名为button-counter的新全局组件app.component('button-counter',{data(){return{count:0}},template:`<button@click="count++">......
  • Vue3-vite 按需引入Element-plus
    1.下载unplugin-vue-components,unplugin-auto-import包npmi-Dunplugin-vue-componentsunplugin-auto-import2.vite.config.js文件中配置1importAutoImportfrom'unplugin-auto-import/vite'2importComponentsfrom'unplugin-vue-components/vite�......
  • 基于vue.js的社区健康服务管理系统-计算机毕业设计源码+LW文档
    摘要:本社区健康服务管理系统是针对目前社区健康服务管理的实际需求,从实际工作出发,对过去的社区健康服务管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。本系统结合计算机系统的结构、......
  • vue npm 视频播放 项目中感觉比较好用的包
    npm@easydarwin/easyplayer对H265H264支持都比较友好!!实测比较好用<!DOCTYPEhtml><htmllang=""><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><......
  • vue中没有index.html 如何可以加上
    在Vue项目中,如果没有默认的index.html文件,你可以手动创建一个并进行设置。以下是创建并配置index.html的步骤:在你的Vue项目根目录下创建一个新的public文件夹(如果还没有)。在public文件夹下创建一个新的index.html文件。在index.html文件中添加基本的HTML结构和必要的标......