子供

2017-10-20 14 views
1

enter image description here子供

こんにちはGuysは、私はこれを行う方法をかなりわからないんだけど、私はDealsTableコンポーネントにNewDealコンポーネントから自分のデータを送信することができますどのように、Vueのに非常に新しいんですか?ご覧のとおり、NewDealには2つの親コンポーネントがあります。私は$ emitと$ onについて読んだことがありますが、実際にnewDeal -> QuickActions -> SideBarのようにする必要があるかどうか確認したいだけですか?私が思っていることが正しければ、そこから行く方法はわかりません。私はあなたが私に光を当ててくれることを願っています。

NewDealコンポーネントからイベントを発信しようとしましたが、DealsTableコンポーネントからイベントを受信しましたが、うまくいかなかった場合、これが可能かどうかわからない、または子が直接子孫である必要があります。親?

ありがとうございます!

答えて

2

グローバル変数バスを使用し、バスでこれを置き換えることを修正しました。

app.jsでの宣言:

window.bus = new Vue({}) 

投光器: bus.$emit()

リスナー: bus.$on()

1

私はNewDealコンポーネントからイベントを放出してからそれを聞いてみましたDealsTableコンポーネントが動作しませんでした

あなたには解決策があるように見えますが、私がこれを助ける場合にはこの1つの部分についてコメントしたいと思っていました。 DealsTableがNewDealからイベントを参照しなかった理由は、子コンポーネントによって生成されたイベントイベントは、直接の親コンポーネントに伝播されるだけであり、上位コンポーネントに伝播されないためです。

vueイベントがチェーンの上位に表示されるようにするには、イベントを聴いて受信した子供の親がイベントを送信する必要があります。このようにして、各親は連鎖の上にイベントをバブルさせることができますが、多くの状況でそれは複雑すぎるので、あなたのwindow.busのアプローチは道のりです。あなたが見ているものがより意味をなさないようにするのに役立つことを願っています。

+1

ありがとうございました!それは実際に私の最初の考えです、私はそれはかなりの理想的ではない大規模な作業を含む放出とリスナーのチェーンのようにそれを行います。さて、javascriptはまだjavascriptです:Dありがとう!私はVuexについても読んだことがありますが、今はそうではないかもしれません。 – Roljhon