我可以通过手表调用方法并安装吗?

时间:2017-08-07 08:46:14

标签: javascript vue.js

我有一个功能(getAllData执行外部数据查询),我需要在两种情况下调用它:挂载组件时和prop更改时。

我在TypeError: this.getAllData is not a functionwatch中使用mounted时获得watch

methods can be called from methods以来,我想知道对于从mountedexport default { props: ['triggerReload'], data: function () { return { // some variables } }, watch: { triggerReload: this.getAllData() }, methods: { getAllData: function () { // this function correctly fetches external data } }, mounted: this.getAllData() } 等组件调用的方法是否属实。

我的(简化)实例如下:

var vm = new Vue(...)

我的解决方法是复制函数的代码(不是DRY)或调用外部函数(在Vue实例之外定义 - 这可能也是反模式)编辑:这是一个组件所以我不知道如何调用外部函数并引用实例(它不是由{{1}}实例化的)

1 个答案:

答案 0 :(得分:4)

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

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

这只是ES6糖的

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

在您的版本中,当创建对象组件时,您将mounted绑定到this.getAllData,因此this将引用当前对象,而不是有一个getAllData方法。你需要在一个函数中完成它,所以Vue可以发挥它的魔力并将this绑定到正确的Vue组件。