新增数据 弹框+表单的基本套路

今天写的这个页面,刚好遇到了一个完成新增数据的功能,中间遇到了一些小问题,特此写篇博客记录下来。

通常来说,点击新增添加数据都需要用到弹框+表单的页面结构,需要用到element组件,如下

这里根据弹框里面的表单的复杂程度,决定是否使用组件-----------

第一种 不使用组件

                <!-- 新增弹框 -->
            <el-dialog
              :title="isEdit?'编辑':'添加'"
              :close-on-click-modal="false"  也就是禁止点弹框之外的地方关闭弹框
              :close-on-press-escape="false" 是否可通过按下 ESC 键关闭弹框
              :visible.sync="isShowDialog" 在data中添加isShowDialog: false  默认弹框隐藏
            >
              <!-- 表单输入新增数据  :rules="rules"表示规则:做表单校验-->
              <el-form ref="roleForm" :model="roleForm" :rules="rules" label-width="100px">
                <el-form-item label="角色名称" prop="name" 绑定了rules规则 有prop才会校验>
                  <el-input v-model="roleForm.name" />
                </el-form-item>
                <el-form-item label="角色描述" >
                  <el-input v-model="roleForm.description" />
                </el-form-item>
              </el-form>
              <!-- 底部点击确认或取消-->
              <el-row slot="footer" type="flex" justify="center">
                <el-col :span="6">
                  <el-button size="small" @click="Close">取消</el-button>
                  <el-button size="small" type="primary" @click="hSubmit">确定</el-button>
                </el-col>
              </el-row>
            </el-dialog>

在弹框中插入一个表单(在data中定义一个isShowDialog为false的默认值)功能思路如下:

1. 点击新增,isShowDialog为true弹框显示,

2.在api中根据接口写ajax请求,然后回到当前页面导入

3.在当前页面封装新增函数 点击弹框底部的确认就调用新增函数,

        发送新增请求之后重新渲染列表 

        提示成功  弹框隐藏

问题:如果有分页的请况, 添加数据之后,如何在当前页面看到新增的数据?

解决方法:需要跳转到最后一条数据所在的页码,最后一页的页码等于 一共几条数据/每页显示几条数据得到的值向上取整

注意点:添加数据成功后 此时总数据也增加了一条 所以应该 总数据++

    只要是有分页功能 增加数据 这个问题都会存在 所以一定要注意!!!

第二种 弹框表单比较复杂的情况 使用组件(通常存在比较复杂的表单校验)如下 添加编辑共用弹框

       首先需要在data中标识当前是添加还是编辑  添加false 编辑true    如isEdit: false,

  父组件----------------------------------------------------------------------------------
   <!-- 添加 编辑弹框 -->
    <el-dialog
      v-if="showDialog"
      :title="isEdit?'编辑':'添加'"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :visible.sync="showDialog"
    >
      <!-- 弹框内容组件 -->
      <deptDialog
        :id="curId"
        :is-edit="isEdit"
        :origin-list="originList"
        @success="hSuccess"
        @close="hClose"
      />

    </el-dialog>

子组件-----------------------------------------------------------------------------------
<template>
  <div>
    <el-form ref="deptForm" label-width="120px" :model="form" :rules="rules">
      <el-form-item label="部门名称" prop="name">
        <el-input v-model="form.name" style="width:80%" placeholder="1-50个字符" />
      </el-form-item>
      <el-form-item label="部门编码" prop="code">
        <el-input v-model="form.code" style="width:80%" placeholder="1-50个字符" />
      </el-form-item>
      <el-form-item label="部门负责人" prop="manager">
        <el-select v-model="form.manager" style="width:80%" placeholder="请选择">
          <el-option v-for="item in employees" :key="item.id" :value="item.username" :label="item.username" />
        </el-select>
      </el-form-item>
      <el-form-item label="部门介绍" prop="introduce">
        <el-input v-model="form.introduce" style="width:80%" placeholder="1-300个字符" type="textarea" :rows="3" />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" size="small" @click.native="hSubmit">确定</el-button>
        <el-button size="small" @click.native="hClose">取消</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

 功能思路如下:

1 父组件写点击出现弹框事件 弹框<el-dialog >

2 另一个文件里面写子组件弹框的表单内容 <el-from>

3 父组件导入组件 注册组件 使用组件(将子组件插入父组件弹框<el-dialog> 中放子组件<el-dialog/>)

4 组件通讯

        父传 :id="curId"                       子收 :props: {  id: { type: String, required: true}, .....}

        子传父 通知父组件 请求成功  this.$emit('success')       父收 @success="hSuccess"

5  表单校验:(后面的博客会写详细的表单校验)

        在data中定义originList: [], // 父组件将表单校验需要用到的数据 收集起来存在originList中 传给子组件  在子组件中完成校验

6 编辑或添加 将id传给子组件

        6.1 点击添加  标识当前状态为添加状态, 给子组件传id过去,让子组件里面点确认按钮时发添加请求  子传父成功事件  在父组件中 提示添加成功 重新渲染页面

        6.2 点击编辑,给子组件传id 设置此时的状态是编辑状态,让子组件里面点确认按钮时发编辑请求  子传父成功事件  在父组件中 提示编辑成功 重新渲染页面

7 封装关闭弹框,表单重置事件,在点击x  取消  确认的时候 都需要调用这个函数

明天附上页面代码 

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue Element UI是一个基于Vue.js前端组件库,而海康视频则是一种视频监控系统。结合两者,可以使用Vue Element UI弹框组件来实现海康视频的功能。 在Vue Element UI中,有一个弹框组件`Dialog`可以用于展示内容、表单、图片等。我们可以利用这个弹框组件来实现海康视频的弹框功能。 首先,我们需要引入Vue Element UI和海康视频的相关依赖包。然后,在Vue的模板中,使用`<el-dialog>`标签来定义一个弹框组件。通过设置`visible`属性来控制弹框的显示与隐藏。 在弹框中,可以使用`<el-form>`标签来展示视频相关的表单,比如输入视频名称、选择视频文件等等。同时,可以使用`<el-upload>`标签来实现视频文件的上传功能。 除此之外,还可以使用`<el-image>`标签来展示视频的缩略图或者封面图。 最后,通过调用Vue的方法或者通过事件绑定来控制弹框的显示与隐藏。比如,在点击确认按钮时,可以调用一个方法来处理相关的逻辑。或者,在获取到视频文件后,可以通过事件绑定来触发视频上传的操作。 综上所述,通过Vue Element UI弹框组件,我们可以方便地实现海康视频的弹框功能。通过结合Vue和Element UI的优势,可以快速开发出具有弹框功能的海康视频系统。 ### 回答2: Vue和Element UI是一种用于构建用户界面的开源框架和库。Vue是一种流行的JavaScript框架,用于构建交互式的Web界面。它具有简单易用的API和强大的能力,使开发人员可以快速构建复杂的前端应用程序。 Element UI是Vue的一个UI框架,它提供了各种用户界面组件和工具,包括弹框组件。弹框是一种常用的交互式组件,可用于显示消息、警告、确认对话框等。 海康视频是一个知名的视频监控解决方案提供商。它提供了一系列视频监控设备、软件和服务,可用于保护和监控各种场所。 结合Vue和Element UI弹框功能,我们可以使用Element UI提供的弹框组件来显示海康视频相关的信息和操作。例如,当需要展示一个海康视频的预览时,我们可以使用Element UI弹框组件来创建一个模态框,其中包含视频的预览界面和相关控制按钮,用户可以通过弹框中的按钮来操作视频的播放、暂停、停止等功能。 除了预览功能,我们还可以使用弹框来展示视频相关的警告信息。例如,当监控系统检测到异常情况时,可以通过弹框来显示警告信息,提醒用户及时处理。 总之,Vue和Element UI弹框功能可以很好地与海康视频集成,为用户提供一个友好的界面来展示和操作海康视频的功能。 ### 回答3: Vue是一种流行的JavaScript框架,而Element UI是一个基于Vue的组件库。弹框Element UI提供的一个组件,可以在网页中显示弹出窗口,用于展示一些提示、警告或者用户交互的内容。 海康视频是一家专业的视频监控设备供应商,其产品包括监控摄像头、视频录像机等。在使用Vue和Element UI开发网页时,我们可以使用弹框组件来展示海康视频相关的内容。 例如,当用户需要查看一段海康视频时,可以点击一个按钮,触发弹框组件显示在界面中央,同时在弹框的内容区域中,嵌入海康视频的播放器。这样用户就可以方便地观看视频,而无需离开当前页面。 利用Vue的动态数据绑定特性,我们还可以根据用户的操作改变海康视频的播放状态。例如,在弹框中提供一个播放/暂停按钮,用户点击按钮时,我们可以修改Vue的数据状态,从而控制视频的播放或暂停。 此外,Element UI弹框组件还提供了其他丰富的功能选项,如设置弹框的大小、位置、背景等样式,以及自定义按钮、输入框等交互元素。可以利用这些特性来完善海康视频弹框的用户体验。 总结而言,借助Vue和Element UI弹框组件,可以在网页中方便地展示海康视频,提供给用户良好的用户体验,同时还可以通过Vue的数据绑定特性来控制视频的播放状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值