VUE中提取公共方法

写一个ajax请求方法,在组件中正常,提取到公共方法的文件中就不正常啦,就报Cannot read property “$http ”of undefined",这个到底是怎么回事?我研究一天啦,也没有找到解决办法,请求帮助

这个是公共方法(common.js):

图片描述

页面的调用方法(rank.vue):

图片描述

报错的情况:
图片描述

阅读 10.2k
6 个回答

this.$http中的this无法指向vue实例,楼上正解。
解决方法,可以将vue实例作为request函数的参数传进来,request(this)

this.$http改成Vue.prototype.$http,别忘了import Vue

先引用,然后使用
import axios from 'axios'
axios.get('url').then((res)=>{
    
 }).catch((err)=>{})

你的公共方法的this根本指的不是VUE的实例,你this能找到$http和store就有鬼了。。。。。你外部js包,不导入需要的依赖,就直接调用么?你这里的this指向的是Request。
import XXXX from 'XXXX'
把你需要的东西引入再用。

有空多补补js基础

function API (prefix) {
  this.prefix = prefix
};

API.prototype.request = function (url, options) {
  url = this.prefix + url
  ... do the request
}

API.install = function (Vue, options) {
  var api = new API(options.prefix)
  Vue.prototype.$api = api
  Vue.api = api
}
const RequestAPI = Request.bind(this)
// 使用RequestAPI
RequestAPI();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏