2017-08-07 66 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組件上。

相關問題