2016-03-02 11 views
6
data: function() { 
    return { 
     questions: [] 
    } 
}, 

watch: { 
    questions : function(val, oldVal) { 
     foo() 
    } 
},  

methods: { 
    foo() { 
     console.log("foo called"); 
    } 
} 

プロデュースエラー:私は例で探しています。またReferenceError: foo is not defined時計から関数を呼び出す方法は?

http://vuejs-ru.github.io/vuejs.org/api/options.html#watch

この文字列は何をすべきか?

handler: function (val, oldVal) { /* ... */ }, それとも機能することができますか?

答えて

8

あなたがあなたの財産を守るために時計を使用する場合は、this.fooとあなたのメソッドを呼び出すことができます:handlerについてのご質問に答えるために

data: function() { 
    return { 
     questions: [] 
    } 
}, 

watch: { 
    questions: { 
     handler: function(val, oldVal) { 
      this.foo(); // call it in the context of your component object 
     }, 
     deep: true 
    } 
},  

methods: { 
    foo() { 
     console.log("foo called"); 
    } 
} 

:それは関数式のどちらかを取ることができ、キーワードプロパティです(例のように)またはのような関数への参照、:ちょうど好奇心のうち

function myHandler() { ... } // Defined somewhere outside of the vue component object 

... 

handler: myHandler, 

... 

:あなたはそれを変更するたびに何かをするために、プロパティを見るために必要とするか、またはcomputed propertiesあなたのPRを解決することができませんオベレムも?

+0

私は、 'foo'を変更したすべてのデータが呼び出すことを理解していますか? すべてのユーザーの変更をチェックするには、チェックボックスをオンにする必要があります。それで私は十分に「時計」ですか? 'question'構造体の値を' v-model = "firstLevelAnswer.isSelected" 'で変更します。 これで、チェックボックスをクリックしてもコンソールに変更が表示されません。 'data'が変わるたびにfooが呼び出されることを期待しています。 –

+0

'firstLevelAnswer'とは何ですか?あなたのコードでは、 'questions'の変更だけを監視しています。 'watch'オブジェクトのキーの名前は、あなたが見ることになるプロパティです。 – nils

+0

ここに私の質問です:http://www.everfall.com/paste/id.php?6blwxsym1kmm 私のプロジェクトのここでの主要部分:http://www.everfall.com/paste/id.php?yptv4v76qqmi –

関連する問題