Vue使用登录弹框插件

本文展示了如何在Vue.js中创建一个登录组件,并通过自定义插件实现全局调用。组件包含一个登录弹窗,弹窗内有确认按钮,点击后隐藏弹窗。插件注册了一个Vue原型方法`$login`,用于方便地在应用中显示登录对话框。样式部分定义了登录对话框的位置和外观。在main.js中引入并使用了这个插件。
摘要由CSDN通过智能技术生成

1、创建登录组件

<template>
  <transition @afterLeave="destroy">
    <div v-if="show" class="login-dialog-wrapper">
      <div class="content-box">
        登录弹窗
        <div @click="confirm">
          确定
        </div>
      </div>
    </div>
  </transition>
</template>

<script>
export default {
  name: 'LoginDialog',
  data() {
    return {
      show: true,
      $$destroyed: false
    }
  },
  methods: {
    confirm() {
      this.show = false
      
    },
    destroy() {
      this.$el.remove()
      this.$$destroyed = true
      this.$destroy()
    }
  }
}
</script>

<style lang="less" scoped>
.login-dialog-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 999;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.3);
  .content-box {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1000;
    transform: translate(-50%, -50%);
    min-width: 7.2rem;
    overflow-x: hidden;
    overflow-y: hidden;
    text-align: center;
    background-color: #fff;
  }
}
</style>


2、loginDialogPlugin.js

import Vue from 'vue'
import loginDialog from '../components/loginDialog'

let instance = null
export default function() {
  Object.defineProperty(Vue.prototype, '$login', {
    // value(option) {
    value() {
      if (instance && !instance.$$destroyed) return
      // const initObj = {
      //   data: typeof option === 'boolean' ? { show: option } : option
      // }
      const Login = Vue.extend(loginDialog)
      const root = document.getElementById('app')
      // if (initObj.callback) {
      //   initObj.methods = { callback: initObj.callback }
      //   delete initObj.callback
      // }
      // instance = new Login(initObj)
      instance = new Login()
      instance.$mount()
      root.appendChild(instance.$el)
    }
  })
}

3、在main.js

import loginDialogPlugin from './plugins/loginDialogPlugin'

Vue.use(loginDialogPlugin)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值