我有一个功能(getAllData
执行外部数据查询),我需要在两种情况下调用它:挂载组件时和prop
更改时。
我在TypeError: this.getAllData is not a function
和watch
中使用mounted
时获得watch
。
自methods can be called from methods以来,我想知道对于从mounted
或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()
}
等组件调用的方法是否属实。
我的(简化)实例如下:
var vm = new Vue(...)
我的解决方法是复制函数的代码(不是DRY)或调用外部函数(在Vue实例之外定义 - 这可能也是反模式)编辑:这是一个组件所以我不知道如何调用外部函数并引用实例(它不是由{{1}}实例化的)
答案 0 :(得分:4)
是的,你可以,你的语法错误:
...
mounted () {
this.getAllData()
}
这只是ES6糖的
mounted: function mounted () {
this.getAllData()
}
在您的版本中,当创建对象组件时,您将mounted
绑定到this.getAllData
,因此this
将引用当前对象,而不是有一个getAllData
方法。你需要在一个函数中完成它,所以Vue可以发挥它的魔力并将this
绑定到正确的Vue组件。