vue+elementui自定义Dialog组件之登录弹框话框实现(实现不同vue组件关联)

elementui提供一个可实现弹框的组件el-dialog,一般会将弹框写在一个vue文件,通过el-dialog套用类似于这种

<el-button round @click="dialogFormVisible = true">登录</el-button>
<el-dialog title="登录" :visible.sync="dialogFormVisible" center>

   <el-form :model="ruleForm2" status-icon :rules="rules2" ref="ruleForm2" label-width="100px" class="demo-ruleForm">

 <el-form-item label="账号" prop="num">
    <el-input v-model.number="ruleForm2.num"></el-input>
  </el-form-item>

  <el-form-item label="密码" prop="pass">
    <el-input type="password" v-model="ruleForm2.pass" auto-complete="off"></el-input>
  </el-form-item>

</el-form>

  <div slot="footer" class="dialog-footer">
    <el-button @click="dialogFormVisible = false; resetForm('ruleForm2')">取 消</el-button>
    <el-button type="primary" @click="submitForm('ruleForm2')">登 录</el-button>
  </div>
</el-dialog>

一般不会造成问题,但是写在同一个vue界面,代码比较臃肿,下面演示一下写在不同的vue文件实现调用

首先在navShow.vue的页面写入如下代码

<el-button round @click="submitForm()">登录</el-button>
<!--仔细阅读Dialog的各个属性参数,会影响到布局排版,例如遇到了一个大坑就是没有设置:append-to-body='true',导致遮罩遮盖整个页面,:lock-scroll="false"没有设置的话,点击前后会感觉到头部导航栏的移动,体验性很不好!!还有设置dialog的宽度width="40%"前面不用加冒号:-->
<el-dialog title="登陆" :visible.sync="dialogTableVisible" center :append-to-body='true' :lock-scroll="false" width="30%">
      <login-name></login-name>
    </el-dialog>
<script>
import LoginName  from '../main/Login.vue';
export default {
    components: {LoginName},
    name: "navShow",
    data() {
      return {
        dialogTableVisible: false
       }
    }     
    methods:{
        submitForm(){
            this.dialogTableVisible=true;//默认页面不显示为false,点击按钮将这个属性变成true
        }
    }
}
</script>

注意:很多人在写完这个,迫不及待地去点击登陆按钮时报错:

那么这个<login-name>这个组件是怎那么来的呢

其实他就是:components: {LoginName},里的LoginName,vue会将其自动转换成为驼峰命名法变成一个组件,在webstorm输入<符号,组件信息会有提醒的。当然个人建议在弹出的vue文件里的name,也要和这个相同

下面介绍一下所弹出的vue页面,这个其实和正常的vue文件一样

<template>
  <section>
    <el-container>
        <el-form label-width="120px" :model="User" :rules="Rules" ref="User" >
          <el-row>
            <el-col>
              <el-form-item label="账号" prop="name">
                <el-input v-model.number="User.name"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col>
              <el-form-item label="密码" prop="pass">
                <el-input type="password" v-model="User.pass" auto-complete="new-password"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col>
              <el-form-item label="记住密码" prop="delivery">
                <el-switch v-model="User.delivery"></el-switch>
              </el-form-item>
            </el-col>
          </el-row>
          <span class="pwwd">
            <a href="">忘记密码?</a>
            <a href="">还没账号,注册一个</a>
          </span>
        </el-form>

    </el-container>
    <div slot="footer" class="dialog-footer">
      <el-button >取 消</el-button>
      <el-button type="primary" @click="submitForm()">登 录</el-button>
    </div>
  </section>
</template>
export default {
    name: 'LoginName',//这个LoginName最好和引入的vue的LoginName相同
}

 

 

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Vue和Element UI都是现代化的前端架,各自拥有强大的API和功能。在Vue中,我们可以简单地使用v-for指令和props从服务器加载表格数据,并在页面上呈现出来。然后,我们可以使用v-on指令(或简化的@符号)来监听单元格的点击事件。当单元格被点击时,我们可以使用Element UI的Dialog组件来呈现一个弹框。 具体实现过程如下: 1. 首先,我们需要安装Vue和Element UI。你可以单独下载这两个架,然后将它们引入你的项目中,或者你可以使用npm来安装它们: npm install vue npm install element-ui 2. 然后,我们需要从服务器加载表格数据。假设数据已经存储在组件的data属性中,并且我们使用了一个简单的表格模板: <table> <thead> <tr> <th>名称</th> <th>价格</th> <th>描述</th> </tr> </thead> <tbody> <tr v-for="(item, index) in items" :key="index"> <td>{{ item.name }}</td> <td>{{ item.price }}</td> <td>{{ item.description }}</td> </tr> </tbody> </table> 3. 接下来,我们需要监听单元格的点击事件。我们可以为每个单元格添加一个事件处理程序,并从事件对象中获取所点击的单元格的数据。为了简化代码并提高可维护性,我们可以将单元格的点击事件封装在一个自定义组件中: <template> <td @click="showDialog">{{ value }}</td> </template> <script> export default { props: ['value'], methods: { showDialog() { // 显示弹框 } } } </script> 4. 最后,我们需要使用Element UI的Dialog组件来创建一个弹框,用来显示所选中单元格的详细信息。我们可以在自定义组件的showDialog方法中使用Dialog组件实现: <template> <td @click="showDialog">{{ value }}</td> </template> <script> export default { props: ['value'], methods: { showDialog() { this.$alert(this.value, '详细信息', { confirmButtonText: '确定' }) } } } </script> 在上面这个例子中,我们使用了Element UI的$alert方法来创建一个弹框,其中的文本内容就是我们所点击单元格的数据。Dialog组件的具体使用方法可以在官方文档中查看。 总结: 以上就是使用Vue和Element UI实现点击表格中单元格后弹出弹框的简单实现方法。通过这个例子,我们可以看到Vue和Element UI的强大功能和易用性。如果你还不熟悉这两个架,那么现在就是时候开始学习它们了!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值