2017-05-14 17 views
2

私はvueJSでプロジェクトをコーディングしています。私は次のコードで構成しました:私は、プロジェクト内のエラーを以下ましメソッドはウォッチャーコールバック関数の関数ではありません

import ProjectsStore from './../stores/ProjectsStore.js'; 

export default { 
    store: ProjectsStore, 
    data() { 
     return { 
      loading: false, 
      randomProject: null, 
     } 
    }, 
    computed: { 
     projects() { 
      return this.$store.state.projects; 
     }, 
     commits() { 
      return this.$store.state.commits; 
     } 
    }, 
    methods : { 
     setCommit :()=> { 
      // code here 
     } 
    }, 
    watch: { 
     projects: (value) => { 
      this.setCommit() 
     } 
    }, 
    mounted() { 
     this.$store.dispatch('loadProjectsList') 
    } 
} 

がコールバックを見て:

this.setCommit is not a function 

私はコールバックでconsole.log (this)を入れて、それがデフォルトのオブジェクトではないVueComponentを表示します。

私は間違っていましたか?

ありがとうございました。

+1

ない100%だったホープは、これ以上の試行錯誤を理解していないが、setCommit 'からあなたの関数の定義を変更してみてくださいたら

} 'を' setCommit(){} 'に設定します。プロジェクトメソッドでも同じかもしれません。 –

+0

それはまさにそれです。どうもありがとうございます !私はES6の初心者ですが、違いは分かりませんでした。 – amiceli

+1

問題はない、私は初心者です。それは私がいつもやったやり方です。お役に立てて嬉しいです。 –

答えて

4

試行錯誤の代わりに構文を変更し、何が効果があるかを見るためには、特定のコードがなぜ機能するのかを理解すればよいでしょう。 VUE documentationで述べたよう

(例えばvm.$watch('a', newVal => this.myMethod()))インスタンスのプロパティの矢印機能を使用しないでください。矢印関数が親コンテキストにバインドされているので、は期待通りのVueインスタンスではなく、this.myMethodは未定義となります。

あなたがes6の矢印機能を使い慣れていれば、hereは、矢印機能のかなり良い説明ですこののバインディングが動作します。 ()=> {:あなたははっきりそして

は私の答えはあなたにいくつかの助けをこの上

+0

コールバックは、矢印機能を使用する必要がある場合の例です。 – Bert

+0

@BertEvansはあなたに私に、または質問をしたミシェリに話しています。申し訳ありません。あなたは –

+0

です。あなたはあなたの答えで、 "インスタンスプロパティやコールバックに矢印関数を使わないでください"と述べています。インスタンスプロパティが正しいです。コールバックはありません。 – Bert

関連する問題