VUE中提取公共方法

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

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

图片描述

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

图片描述

报错的情况:
图片描述

回答:

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();

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注