Vue+ElementUI实现向导式弹出框

本文介绍了如何使用Vue和ElementUI构建一个向导式对话框。内容包括向导式对话框的概念,展示了页面效果,并详细解析了步骤条、表单和按钮组件的实现过程。通过实例代码,指导读者实现一个具有下一步、上一步和提交功能的向导式弹窗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向导式对话框简介

向导式对话框是一种非常友好的界面,它能够引导用户一步步的输入信息

页面效果

点击按钮,弹出向导式弹框

点击【下一步】,在对话框中进行向导式跳转

点击【提交】,可提交信息

Vue+ElementUI实现向导式弹框

点击【打开弹窗】按钮,调用openDig方法,打开向导式弹出框

openDig方法如下:

active与步骤条:active属性绑定,控制步骤条进度,打开弹窗时重置active,保证每次打开弹窗后,步骤条都是从起始位置开始

open为布尔值,与弹出框的:visible.sync属性绑定,控制弹出框是否显示

el-dialog中,title为弹框名称,:visible.sync设置弹窗是否隐藏,width设置弹框宽度

dialog弹框组件中可分为三个部分来理解:

1:步骤条组件部分

2:表单组件部分

3:按钮组件部分

在data中定义:visible.sync的值open

步骤条组件部分

active设置当前激活步骤,默认为0,通过设置active的值来设置步骤条的状态

在data中定义active的值active

表单组件部分

通过v-if判断active的值,满足条件则展示表单输入框,与步骤条同步

设置表单的样式

在data中设置editForm,用来设置表单数据

按钮组件部分

与表单部分相同,通过v-if判断控件是否展示

prve方法与next方法用于执行控制active值,从而达到动态控制向导页面的效果

submitForm方法用于执行关闭弹框

完整代码如下:

<template>
  <div class="app-container">
    <el-button type="primary" @click="openDig">打开弹窗</el-button>
    <!--点击按钮,调用openDig方法-->

    <el-dialog title="新建任务" :visible.sync="open" width="650px">
      <!--:visible指的是属性绑定,表示弹框的显示隐藏-->
      <el-steps :active="active">
        <!--.sync指的就是同步动态,双向的来表示visible的值-->
        <el-step title="步骤 1"></el-step>
        <!--active为0时,为选中状态-->
        <el-step title="步骤 2"></el-step>
        <!--active为1时,为选中状态-->
        <el-step title="步骤 3"></el-step>
        <!--active为2时,为选中状态-->
      </el-steps>

      <div class="el-dialog-div">
        <el-form
          ref="editForm"
          :model="editForm"
          label-width="50px"
          style="margin-top:20px; margin-right:40px"
        >
          <el-form-item v-if="active===0" label="user" prop="user">
            <!--当active为0时显示控件-->
            <el-input v-model="editForm.user" placeholder="请输入1" />
          </el-form-item>

          <el-form-item v-if="active===1" label="test" prop="test">
            <!--当active为1时显示控件-->
            <el-input v-model="editForm.algorithm_id" placeholder="请输入2" />
          </el-form-item>
          <el-form-item v-if="active===1" label="test1" prop="test1">
            <!--当active为1时显示控件-->
            <el-input v-model="editForm.test1" placeholder="请输入2" />
          </el-form-item>

          <el-form-item v-if="active===2" label="file" prop="file">
            <!--当active为2时显示控件-->
            <el-input v-model="editForm.file" placeholder="请输入3" />
          </el-form-item>
        </el-form>
      </div>

      <el-row style="position: absolute; right: 20px; bottom:20px">
        <el-button id="prveBtn" type="primary" plain @click="prve" v-if="active===1||active===2">上一步</el-button>
        <!--当active为1或2时显示按钮,点击执行prve方法-->
        <el-button id="nextBtn" type="primary" plain @click="next" v-if="active===0||active===1">下一步</el-button>
        <!--当active为1或0时显示按钮,点击执行next方法-->
        <el-button type="primary" @click="submitForm" v-if="active===2">提交</el-button>
        <!--调用submitForm方法,关闭对话框-->
      </el-row>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      open: false, //定义open并设置初始值为false,默认弹出框不显示
      active: 0, //定义并设置active初始值
      editForm: {}
    };
  },
  methods: {
    openDig() {
      this.active = 0; //重置active
      this.open = true; //设置open为true显示dialog对话框
    },
    prve() {
      --this.active;//active自减一
      if (this.active < 0) this.active = 0;//设置active最小值
    },
    next() {
      ++this.active;
      if (this.active > 2) this.active = 2;
    },
    submitForm() {
      this.open = false; //设置open为false关闭dialog对话框
    }
  }
};
</script>

<style scoped>
.el-dialog-div {
  height: 60vh;
}
</style>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值