2016-10-14 7 views
0

私はこの1が動作しているいくつかのネストされた子コンポーネント

{{ $parent.$parent.testFunction('foo', 'bar') }} 

で親機能を使用しようとしたが、午前私は巣のレベルを変更していますたびに、電話を変更する必要があります:

{{ $parent.testFunction('foo', 'bar') }} 

これを修正する方法はありますか? 親は$ルートレベルの要素ではないため、機能しません。 :)

答えて

0

イベントを使用して親ツリーをディスパッチし、それが到着したときに処理できるようにするのが最善の方法です。

あなたの子供と親がシステム内にどこに存在するかは関係ありません。

events: { 
    "testFunction": function(foo, bar) { 
     // Do Foobar 
     return true; // Stops the event from going further 
        // return nothing to have it continue up the chain 
    } 
} 

は、あなたのコンポーネントにちょうど私が個人的にそれを使用する必要があるすべてのコンポーネントにtestFunctionをインポートすることになる

this.$dispatch("testFunction", "Foo", "bar"); 
+0

Vue 2に '$ dispatch'が存在しなくなりました。 –

+0

@BillCriswell質問はVueJS 1を指定しました。 –

+0

あなたは絶対に正しいです。 –

0

を実行します。

var doFoo = function() { 
    console.log('foo') 
} 

// Component A 
{ 
    methods: { 
    doFoo: doFoo, 
    } 
} 

// Component B 
{ 
    methods: { 
    doFoo: doFoo, 
    } 
} 

実際にはここでフィルタを使用したいと思いますが、

+0

もし私がそれをミックスインに入れたら、そのデザインを必要とするコンポーネントに配布することができます。 –

+0

ええ、もっと明示的にすることをお勧めします。私がたくさんのものをグループ化する必要があるなら、私はこのアプローチのためのミックスインを考えています。 –

関連する問題