vue工程的axios配置的axios.js中如何获取vue实例?

vue工程的axios配置的axios.js中如何获取vue实例?

vue工程中,我在.vue文件中this可以获取vue对象,在.js文件中this.XX无法获取vue实例,怎么办呢,我想使用this.*方法

我想在*.js里面使用vue实例的this.$createElement 所以我这么做的

我下面这么写的,解决了我的问题,但是优雅吗?

import Vue from 'vue'
import App from './App.vue'

new Vue({
  router,
  store,
  render: h => h(App),
  created() {
    Vue.prototype.$createElementNode = this.$createElement
  }
}).$mount('#app')

axios.js文件里面:

import { MessageBox } from 'element-ui';
import Vue from 'vue'

const h = Vue.prototype.$createElementNode
MessageBox({
  title: '消息',
  // message: message,
  message: h('div', null, [
    h('el-input', {
      props: {
        value: 1234,
      }
    }),
    h('el-input', {
      props: {
        value: 1234,
      }
    })
  ]),
  showCancelButton: true,
  confirmButtonText: '确定',
  cancelButtonText: '取消'
})
阅读 4.3k
2 个回答
 var app = new Vue({
        el:"#app",
        data :{
            message: 'Hello Vue!',
            goods:[]

        },
     created(){        axios.get('/goods/homeGoods').then(function(response) {
                this.goods=response.data
                console.log(this.goods.catelogGoods1)
                // console.log(response);
                //在这里需要bind(this),才能访问到Vue实例中的data
            }.bind(this))

        }}
    )

我能想到的只能是你这样的写法,外部文件需要调用组件内的实例,只能全局引用保存。不过这样写很容易内存泄漏。确实不美观

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