vue-resource 常用的请求代码段如何独立成service模块?

发布于 2022-09-04 20:00:13 字数 1199 浏览 10 评论 0

  • 我们都知道,vue-resouce的请求是要通过Vue实例来调用的

import VueResource from 'vue-resource'
//常量:获取用户数据
const URL_GET_USER_INFO = '/json/getUserInfo';
//请求
var promise = this.$http.get(URL_GET_USER_INFO);
promise.then(function (res) {  
  // 处理成功的结果  
  console.log('this.$http 的請求')  
}).catch(function(res)){
  // 处理失败的结果  
  console.error('this.$http 的請求');
}

  • 需求 :由于获取用户信息的请求很常用,我希望将该代码段封装到一个模块,哪里用到就调用。

service/api.js

//常量:获取用户数据
const URL_GET_USER_INFO = '/json/getUserInfo';
//发送请求
export function getUserInfo(){
  return this.$http.post(URL_GET_USER_INFO);
}

home.vue

//引入模块
import { getUserInfo } from '../service/api.js'
//调用方法
getUserInfo().then(function(){
  console.log('this.$http 的請求') 
}).catch(function(){
  console.error('this.$http 的請求');
});
  • 问题 :提示找不到$htpp对象,难道vue-resource必须要通过Vue实例调用,不能独立成模块吗?

Uncaught TypeError: Cannot read property '$http' of undefined

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夏日落 2022-09-11 20:00:13

问题解决

service/api.js 传入this执行环境来调用$http即可

//常量:获取用户数据
const URL_GET_USER_INFO = '/json/getUserInfo';
//发送请求
export function getUserInfo(context){
  return context.$http.post(URL_GET_USER_INFO);
}

home.vue

//引入模块
import { getUserInfo } from '../service/api.js'
//调用方法
getUserInfo(this).then(function(){
  //...
}).catch(function(){
  //...
});
念﹏祤嫣 2022-09-11 20:00:13

this指向不一样了,所以会报错,不能那样封装。

简单的满足你的需求可以用Vue.http而不是用this.$http

无远思近则忧 2022-09-11 20:00:13

VueResource.post也是可以调用的.
vue只是把vueResource绑定到$http上.

空‖城人不在 2022-09-11 20:00:13

只要你已经vue实例之前use了vue-resource, 那么
Vue.http 和 组件里 this.$http是一样的

https://github.com/pagekit/vu...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文