2017-08-07 37 views
1

我有一个功能(getAllData可以进行外部数据查询),我需要在两种情况下调用:组件挂载和更改prop时。我可以从手表调用方法并安装吗?

但是,在watchmounted中使用它时,我得到了TypeError: this.getAllData is not a function

由于methods can be called from methods,我想知道这是否适用于从组件调用的方法,如watchmounted

我的(简化的)实例是以下:

export default { 
    props: ['triggerReload'], 
    data: function() { 
     return { 
      // some variables 
     } 
    }, 
    watch: { 
     triggerReload: this.getAllData() 
    }, 
    methods: { 
     getAllData: function() { 
      // this function correctly fetches external data 
     } 
    }, 
    mounted: this.getAllData() 
} 

我的解决办法将是或者复制功能的代码(这是不DRY)或调用外部功能(Vue的实例之外定义 - 这可能也是反模式)编辑:这是一个组件,所以我不知道如何调用外部函数和引用实例(它不是实例化的var vm = new Vue(...)

+0

你检查过这个是什么吗? – evolutionxbox

回答

2

是的,你可以,你只是有错误的语法:

... 
mounted() { 
    this.getAllData() 
} 

这仅仅是ES6糖

mounted: function mounted() { 
    this.getAllData() 
} 

在你的版本要绑定mountedthis.getAllData创建对象成分,所以this将引用当前对象,不具有一种getAllData方法。你需要在一个函数中做,所以Vue可以做到这一点,并将this绑定到正确的Vue组件上。

相关问题