2017-07-27 10 views
0

私はVueインスタンスにいくつかのプロパティを追加するプラグインを持っています。
次に、this.$plugin.propを使用してコンポーネント内のこのプロパティにアクセスできます。どのように変更を監視できますか?私はthis.$plugin.prop値に基づいてコンポーネント内で何かする必要がありますが、watchまたはthis.$watchのどちらも私のために働いていません。私は、変数外のコンポーネントを監視することはできませんので、私は動作しない例コンポーネント内のVueインスタンスプロパティを監視する方法は?

mounted() { 
     this.$watch('$plugin.prop', val => console.log(val)); 
    } 

のために、コンポーネントのコンテキストでその理由watch作品を想定しています。
これを達成する正しい方法は何ですか?

+2

を試してみてください - http://jsbin.com/kopucayoro/edit ?html、js、output –

答えて

0

あなたは代わりにそのように計算されたプロパティを使用することがあります。

computed: { 
    pluginChanged() { 
     console.log(this.$plugin.prop.val); 
     return this.$plugin.prop.val; 
    } 

は、計算されたプロパティhereについては、こちらをご覧ください。

+0

私は分かりませんが、私のためにコンポーネントの外のデータでは動作しません。コンポーネント内部のデータで動作します。 – user0103

+1

あなたはそのカスタム 'プラグイン'をどのようにデザインしたかによって異なります! [vuex](https://vuex.vuejs.org/ja/)を使用しましたか?そうでなければ、Vueが 'data'オプションだけを見ることを考慮する必要があります。言い換えれば、 'データ'モデルだけが反応的です。前述のように、 'Vuex'ライブラリを使用するか、そのデータをコンポーネントの' data'モデルに格納することができます。 @MaxStern – ironcladgeek

+0

ああ、それは理にかなっています。 – user0103

1

代わりのmounted()あなたは、コンポーネントのデータモデルの小道具の参照をプラグイン店にしようとした後、コンポーネントのデータモデルから、そのプロパティを見ることができます

watch: { 
    '$plugin.prop': function(value){ 
     console.log(value); 
    } 
} 
関連する問題