博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在 vuex action 中获取到 vue 实例
阅读量:6254 次
发布时间:2019-06-22

本文共 912 字,大约阅读时间需要 3 分钟。

问题:

在做运营开发工具的时候 我想要请求后台服务器保存成功后 弹出一个弹框(饿了吗 的 message 弹框), 由于$message 是挂在 Vue原型链上的方法 (Vue.prototype.$message = Message;)。以下action.js 中的this不指向Vue,因此以下代码会报错。

//action.js     export const saveActivity = ({commit},params) => {      return Fetch.post(`/activities`,params).then( data => {        if(data.code===2000){             this.$message('保存成功') ;  // 报错!!!        }      })    };

解决办法:

export const saveActivity = ({commit},params) => {  return Fetch.post(`/activities`,params).then( data => {    return data  })};

由于action 的处理函数返回的是 promise 对象,此处可以在调用saveActivity 的组件中 .then() 方法中处理:

methods:{...mapActions([      'saveActivity'    ]),this.saveActivity(params).then(data=>{        if(data.data.code === 2000){          this.$message({            message: '保存成功',            type: 'success',            center:true          })        }      })}

综上: 虽然没有在 action 中获取到 vue , 但是用了另一种方法同样实现了我的功能。 以后类似这种问题都可以像这样解决。

转载地址:http://bkfsa.baihongyu.com/

你可能感兴趣的文章
ibatis resultMap 的用法
查看>>
Protocol Buffer技术详解(数据编码)
查看>>
【javascript】ajax 基础
查看>>
2015 UESTC 搜索专题N题 韩爷的梦 hash
查看>>
MySQL 二进制日志过滤
查看>>
Centos下Tomcat 安装Apache Portable Runtime
查看>>
【BZOJ】2563: 阿狸和桃子的游戏
查看>>
redis 中文字符显示
查看>>
webview与JS的交互
查看>>
吴翼大神
查看>>
在Gridview如何进行每行单元格比较
查看>>
国内外MD5在线解密网站
查看>>
插件五之滚动条jquery.slimscroll.js
查看>>
187实现录制视频功能
查看>>
教你pomeloclient包libpomelo增加cocos2d-x 3.0工程(Windows、Android、IOS平台)
查看>>
CSS3实现时间轴效果
查看>>
经典回忆Effective C++ 1
查看>>
JQUERY名称冲突
查看>>
poj 1975 Median Weight Bead(传递闭包 Floyd)
查看>>
【C++ Primer每天刷牙】一间 迭代器
查看>>