vue中怎么在api.js中调用vux的alert插件

我想在api.js中对axios请求结果做统一的处理,如果请求出错,就调用vux的alert插件去弹框提示,请问怎么配置vux可以在api.js中也能使用alert插件呢?
这是我main.js的代码

clipboard.png

这是api.js的代码

clipboard.png

clipboard.png
希望大神能指导一下,谢谢各位了~

ps:
在api.js中引入vue,然后:
clipboard.png

clipboard.png
但是,调用的时候就报错了

clipboard.png

阅读 8k
4 个回答
  1. 再引个vue进来。
  2. 如果你的getAxios是挂在vue上的,直接this.$vux.alert.show()应该也行。

  1. Vue.prototype上是有,所以Vue构造函数的实例(__proto__)上才会有。所以你得这么调用
Vue.prototype.$xxx
// 或者
let vm = new Vue()
vm.$xxx
  1. Vue从api.js被引入的时候还没有将组件注册上,所以要在异步回调里才能调用组件,可以试一下:
setTimeout(() => vm.$xxx, 0)

补充第一个答案的详情解决思路

1.首先在main.js的关键是导出根组件,就是new vue那里

import { LoadingPlugin } from 'vux'
Vue.use(LoadingPlugin)

let myThis = new Vue({
router,
axios,
render: h => h(App)
}).$mount('#app-box')

export default myThis

2.然后在JS文件中引入这个myThis

import _myThis from '@/main.js'

_myThis.$vux.loading.show({

text: 'Loading'

})

这里的思路比较奇特,vux官方只给出了在.vue后缀文件的使用方法,
.js后缀文件可参考这种思路

请问解决了嘛,我现在也遇到这个问题了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题