vue组件挂载到全局方法的示例代码

前端之家收集整理的这篇文章主要介绍了vue组件挂载到全局方法的示例代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在最近的项目中,使用了bootstrap-vue来开发,然而在实际的开发过程中却发现这个UI提供的组件并不能打到我们预期的效果,像alert、modal等组件每个页面引入就得重复引入,并不像element那样可以通过this.$xxx来调用,那么问题来了,如何通过this.$xxx来调用起我们定义的组件或对我们所使用的UI框架的组件呢。 以bootstrap-vue中的Alert组件为例,分一下几步进行:

1、定义一个vue文件实现对原组件的再次封装

main.vue

{{msg}}

这里主要就是对组件参数、回调事件的一些处理,与其他处理组件的情况没有什么区别

2、定义一个js文件挂载到Vue上,并和我们定义的组件进行交互

index.js

{ Object.defineProperty(Vue.prototype,'$alert',{ get () { let id = 'message_' + seed++ const alertMsg = options => { instance = new AlertConstructor({ propsData: options }) index++ instance.id = id instance.vm = instance.$mount() document.body.appendChild(instance.vm.$el) instance.vm.$el.style.zIndex = index return instance.vm } return alertMsg } }) } export default install

其主要思想是通过调用这个方法给组件传值,然后append到body下

3、最后需要在main.js中use一下

4、使用

5、confrim的封装也是一样的

main.vue

提示" @change="modalChange" @show="modalShow" @shown="modalShown" @hide="modalHide" @hidden="modalHidden" @ok="modalOk" @cancel="modalCancel" :centered="true" :hide-header-close="hideHeaderClose" :no-close-on-backdrop="noCloSEOnBackdrop" :no-close-on-esc="noCloSEOnEsc" :cancel-title="cancelTitle" :ok-title="okTitle">

index.js

{ Object.defineProperty(Vue.prototype,'$confirm',{ get () { let id = 'message_' + seed++ const confirmMsg = options => { instance = new ConfirmConstructor({ propsData: options }) index++ instance.id = id instance.vm = instance.$mount() document.body.appendChild(instance.vm.$el) instance.vm.$el.style.zIndex = index return instance.vm } return confirmMsg } }) } export default install

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

猜你在找的Vue相关文章