封装的插件有如下代码:
toast/toast.vue
<template> <div id="toast"> <p v-show="show">{{msg}}</p> </div> </template> <script> export default { data() { return { msg: '', show: false } } } </script>
toast/index.js
import ToastComponent from './toast.vue' const Toast = {} // 注册Toast Toast.install = (Vue) => { const ToastConstructor = Vue.extend(ToastComponent) const instance = new ToastConstructor() instance.$mount(document.createElement('div')) document.body.appendChild(instance.$el) Vue.prototype.$toast = (msg) => { instance.msg = msg instance.show = true } } export default Toast
main.js
import Toast from './common/plugin/toast' Vue.use(Toast)
使用
this.$toast.show("你好aaa")
效果
现在的问题是,单次调用时没什么问题的,但是如果我想在同一个页面分别调用
this.$toast.show("你好aaa")和this.$toast.show("你好bbb"),
我期望的效果是出现你好aaa和你好bbb两个插件产生的元素,但实际结果是界面只会显示你好bbb,第二次的调用会覆盖掉第一次的调用,请问如何达到调用两次就产生两个插件,而不是只显示最后的一次调用。
已解决
悬赏分:30
- 解决时间 2021-11-28 06:03
点赞 0反对 0举报 0
收藏 0
分享 0
回答1
最佳
-
Toast.install = (Vue) => { const ToastConstructor = Vue.extend(ToastComponent) Vue.prototype.$toast = (msg) => { const instance = new ToastConstructor() instance.$mount(document.createElement('div')) document.body.appendChild(instance.$el) instance.msg = msg instance.show = true } }
支持 0 反对 0 举报2021-11-27 07:50