2017-09-08 6 views
0

Emberコンポーネントにカスタムアクションを定義しようとしています&親/子の間で通信したいです。私-child.jsでEmberが親子通信のテンプレートにアクションを追加する

、私は

actions: { 
    someCustomAction: function() { 
     let self = this; 
     self.sendAction('someCustomAction'); 
    }, 
} 

を持っていると私は以下のように私の-parent.jsに同じをキャッチ。

actions: { 
    someCustomAction: function(){ 
     console.log("Inside someCustomAction...."); 
    }  
} 

さて、上記のコードで、制御/アクションが私の-parent.jsに来ていません

私は私の親で

以下

としてテンプレートに「someCustomAction」を追加する必要があります.hbs

{{my-child someCustomAction="someCustomAction"}} 

私は同じ理由を知りたいと思っていました。なぜ、sendActionを自動的に動作させないのですか?

答えて

1

データダウン、アクションアップ(DDAU)パターンに従うとき、私はそれについてどうやってやりますか。

まず、action helperを使用して子供に発射させたい動作を渡します。

{{my-child someActionName=(action 'parentAction')}}

その後、あなたは行動を盗んと子コンポーネントからそれを発射します。

this.get('someActionName')(params);

Ember Twiddle Complete Example

+0

コンポーネントを単にテンプレートでどのように定義するかに基づいて、コンポーネントを「親」または「子」と呼んでいますか? A.hbsにBの参照が含まれている/そうであるように、Aは親であり、Bは子です。 – testndtv

+1

それは正しいです。 @testndtv – BrandonW

1

コンポーネントは文脈認識していないためです。したがって、アクションは手動で結びつける必要があります。しかし、これはまた、あなたには、同じコンポーネントと、さらに多くの引数でも異なるアクションを送る能力を与えます。

コンポーネントは、その周囲から隔離されているので、 成分ニーズが有する任意のデータに渡される。 https://guides.emberjs.com/v2.15.0/components/passing-properties-to-a-component/

成分が真に分離されている場合、アクションは同様です。 https://guides.emberjs.com/v2.15.0/components/triggering-changes-with-actions/#toc_passing-the-action-to-the-component

+0

これはアクションだけでなく純粋なクラス/コンポーネント属性にも当てはまります – testndtv

関連する問題