您现在的位置是:网站首页> 编程资料编程资料

vue常用组件之confirm用法及说明_vue.js_

2023-05-24 493人已围观

简介 vue常用组件之confirm用法及说明_vue.js_

vue组件之confirm

一些自带的方法,比如alert,confirm等,往往由于浏览器不同而展现出不同的样式,为了统一,我们可以自己实现简单封装,下面代码是vue的一个组件,它简单实现了confirm功能。

代码如下:

vue自定义confirm弹窗(全局组件)

全局组件方式

全局组件方式采用在main.js文件中进行全局注册的方式

首先创建mmtoast.vue组件,自定义弹窗的样式。

接下来创建index.js文件编写原生的JS代码进行动态自定义弹窗的插入

import MmToast from './mmtoast.vue'   let instance let showToast = false const mmToast = {     install(Vue, options = {}) {         let opt = MmToast.data() // 获取组件中的默认配置         Object.assign(opt, options) // 合并配置,最终返回opt以一个对象的形式         Vue.prototype.$mmToast = (message) => {             return new Promise((resolve, reject) => {                 if (message) {                     opt.message = message // 如果有传message,则使用所传的message                 }                 /*                      解决如何把toast里面的template放到body里面,这个时候就可以用到el这个属性,                     但是如果直接把toast组件里面的el这个属性,再安装插件的时候赋给body是没有用的,这个时候toast还没有渲染出来,那么如何解决呢                     就是install方法里面来手动挂载组件,创建一个构造器,然后new那个构造器,                     创建出一个组件对象,然后把这个对象挂载到一个div那里,然后才把内容赋给body,做好把这个构造出来的对象付给原型                  */                 let TempToastConstructor = Vue.extend(MmToast) // 创建一个TempToastConstructor组件                   instance = new TempToastConstructor({                     data: opt                 })                 instance.vm = instance.$mount()                 //没有挂载到任何文档中,模板将被渲染为文档之外的的元素,并且你必须使用原生DOM API把它插入文档中。该方法返回实例自身。                 // console.log(instance.vm === instance)  // 输出为true                 document.body.appendChild(instance.vm.$el)//el对应的就是组件的dom元素                 instance.vm.visible = showToast = true                     instance.rightClick = function () {                     resolve()                     instance.vm.visible = showToast = false                 }                   instance.leftClick = function () {                     reject()                     instance.vm.visible = showToast = false                 }               })         }     } } export default mmToast

在mian.js中进行全局组件的注册

import mmToast from '../src/components/mmtoast/index.js' Vue.use(mmToast)

接下来在自己的组件中进行引入

   this.$mmToast("此操作将永久删除该文件, 是否继续?")         .then(() => {           this.historyList = [];           localStorage.setItem("placeHistory", null);           console.log("删除成功啦!");         })         .catch(() => {           console.log("取消删除啦");         });

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。 

-六神源码网