javascript - 如何在Vue.js中导出命名实例,停止使用: var app = this

标签 javascript vue.js vuejs2 vue-component

我在 vue-cli 创建的 webpack 项目中使用 .vue 模板。

我通常使用“导出默认值”来导出文件,如下所示:

 export default {
   data () {
     return {
       message:''
     };
 },
 ...

在脚本的后面,当我尝试访问实例时,它似乎在任何函数或第三方库(如 axios)中,我必须在顶部编写类似的内容:

 var app = this;

这样我就可以访问数据属性...例如:

    var app = this;

    axios.post('https://test.com/api/getMessage',{}).then(res => {
        app.message = res.data.message
    })
    .catch(error => {
        console.log(error)
    });

但是调用 var app = this;所有的时间都变得很累。

我更愿意将实例放入变量中,例如:

 let app = {
  data () {
    return {
       message:''
  };
 },
 methods :{
   getMessage:function(){

        axios.post('https://test.com/api/getMessage',{}).then(res => {
            app.message = res.data.message
        })
        .catch(error => {
            console.log(error)
        });
   } 
 }  
}

但我不明白如何正确导出或导入它。似乎每个示例都只使用导出默认值。因此,重申我的问题,是否有更好/更智能的方法来导出和导入脚本,这样我就不必编写:

 var app = this; 

最佳答案

axios.post('https://test.com/api/getMessage',{}).then(res => {
    this.message = res.data.message
})

这应该可行 - 箭头函数发生在它们编写的范围内,这意味着 this 将引用那里的 Vue 实例。如果您没有使用箭头函数,则必须专门绑定(bind)范围:

axios.post('https://test.com/api/getMessage',{}).then(function(res){
    this.message = res.data.message
}.bind(this))

关于javascript - 如何在Vue.js中导出命名实例,停止使用: var app = this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295332/

相关文章:

javascript - 如何添加多个属性 - vue.js

javascript - 集成 React.js 非 JS 服务器 API

javascript - node.js 和 AMD API 有什么用?

javascript - Vue JS - 如何让 WebGL 通过 Vue 渲染而不消失?

php - 如何通过 Axios 将文件发送到 Laravel

javascript - 在 vue.js 中访问数组对象属性

javascript - 下划线 where es6/typescript 替代

javascript - DOM onclick 处理程序参数/执行上下文

javascript - 我如何能够在 vue js html 中以给定格式多次选择和传递数据?

javascript - 视觉 : How to bind property dynamically to a new DOM element