您现在的位置是:网站首页> 编程资料编程资料
vue常用组件之confirm用法及说明_vue.js_
2023-05-24
493人已围观
简介 vue常用组件之confirm用法及说明_vue.js_
vue组件之confirm
一些自带的方法,比如alert,confirm等,往往由于浏览器不同而展现出不同的样式,为了统一,我们可以自己实现简单封装,下面代码是vue的一个组件,它简单实现了confirm功能。
代码如下:
vue自定义confirm弹窗(全局组件)
全局组件方式
全局组件方式采用在main.js文件中进行全局注册的方式
首先创建mmtoast.vue组件,自定义弹窗的样式。
提示{{message}}
接下来创建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("取消删除啦"); });以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关内容
- react使用useImperativeHandle示例详解_React_
- vue-router路由跳转问题 replace_vue.js_
- vue实现导出word文档功能实例(含多张图片)_vue.js_
- 在vue中如何引入外部less文件_vue.js_
- vue-router如何实时动态替换路由参数(地址栏参数)_vue.js_
- element-ui中el-input只输入数字(包括整数和小数)_vue.js_
- Vue Router修改query参数url参数没有变化问题及解决_vue.js_
- vue中如何防止用户频繁点击按钮详解_vue.js_
- vue中的路由传值与重调本路由改变参数_vue.js_
- 前端算法题解leetcode36-有效的数独示例_JavaScript_
