vue 实现在同一界面实现组件的动态添加和删除

本文介绍如何在Vue.js中使用v-for指令循环显示组件,实现动态数据的增加和删除功能。通过实例展示了如何在子组件中绑定数据,使用v-model双向绑定,以及如何在点击按钮时调用方法来添加或删除数据项,实现动态更新。
摘要由CSDN通过智能技术生成

 1.插入静态组件,将自己想要循环的组件显示在页面上,利用v-for进行循环操作,操作包括增删。

//所有要显示的子组件,写在一个li标签,有 v-for循环。
  <li v-for="(item, index) in questionList" v-bind:key="index">
          <el-row :gutter="20">
            <el-col offset="2" :span="4">
              <el-select
                size="small"
                v-model="chooseValue"
                multiple
                placeholdr="请选择试题类型"
                style="width:200px;margin-left:-40px"
              >
                <el-option :value="item.mineStatusValue" style="height:auto">
                  <el-tree
                    :data="data"
                    node-key="id"
                    :props="defaultProps"
                    @node-click="handleNodeClick"
                  ></el-tree>
                </el-option>
              </el-select>
            </el-col>
            <el-col offset="3" :span="3">
              <el-select
                style="margin-left:-30px"
                size="small"
                v-model="item.value"
                placeholder="请选择">
                <el-option
                  v-for="item in questionoptions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                ></el-option>
              </el-select>
            </el-col>
            <el-col offset="2" :span="4">
              <el-input style="width:45px;" size="small" v-model="count">
                {{ item.count }}
              </el-input>
              <label>&nbsp;/0&nbsp;</label>
            </el-col>
            <el-col :span="6">
              <el-input style="width:45px;" size="small" v-model="sourcess">
                {{ item.sourcess }}
              </el-input>
              <label>&nbsp;&nbsp;</label>
              <!-- 在i标签设置删除按钮,运用splice函数。 -->
              <i class="el-icon-remove-outline"
                style="margin-left:20px"
                @click="questionList.splice(index, 1)"
              ></i>

2.增

在方法添加按钮,在点击添加按钮的时候将需要的参数传进数组,遍历数组,达到组件渲染。

 //添加试题,组件循环显示
    addQuestion() {
      console.log("添加试题");
      this.questionList.unshift({
        mineStatusValue: this.mineStatusValue,
        questionoptions: this.questionoptions,
        count: this.count,
        sourcess: this.sourcess,
      });
    },

3.删

根据选中的组件,获取它的索引,根据下标把它删掉,更新数组,重选渲染组件。

注:删除的时候用到了splic函数,具体的使用可以自己了解。

 <i class="el-icon-remove-outline"
    style="margin-left:20px"
    @click="questionList.splice(index, 1)">
</i>

4.效果

要将Vue界面中的对话框导出为PDF,需要使用JavaScript的PDF库来生成PDF文档。以下是实现此功能的步骤: 1. 安装pdfmake库:在Vue项目中使用npm install pdfmake命令安装pdfmake库。 2. 创建Vue组件:创建一个Vue组件来包含对话框的所有内容。 3. 使用pdfmake库生成PDF:在Vue组件中使用pdfmake库来生成PDF文件。可以使用pdfmake的定义文档对象类型的方法来定义PDF文档的内容。例如,可以使用pdfmake的makeDocumentDefinition方法来定义文档对象,然后将其作为参数传递给pdfmake的createPdf方法来生成PDF文件。 4. 下载PDF文件:在生成PDF文件后,可以使用JavaScript的FileSaver库将其下载到本地计算机。使用FileSaver库的saveAs方法将PDF文件作为Blob对象保存到本地计算机。 以下是一个示例代码,用于生成和下载包含对话框的Vue组件的PDF文件: ```javascript <template> <div> <dialog ref="dialog">This is a dialog.</dialog> <button @click="exportPDF()">Export PDF</button> </div> </template> <script> import pdfMake from 'pdfmake/build/pdfmake'; import pdfFonts from 'pdfmake/build/vfs_fonts'; import { saveAs } from 'file-saver'; pdfMake.vfs = pdfFonts.pdfMake.vfs; export default { methods: { exportPDF() { const docDefinition = { content: [ { text: 'Dialog contents:', style: 'header' }, { text: this.$refs.dialog.innerHTML } ] }; pdfMake.createPdf(docDefinition).getBlob((blob) => { saveAs(blob, 'dialog.pdf'); }); } } }; </script> ``` 在上面的代码中,我们使用pdfmake库定义了一个文档对象,其中包含对话框的内容。然后,我们使用pdfmake的createPdf方法生成PDF文件,并使用FileSaver库的saveAs方法将其下载到本地计算机。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值