2017-09-11 16 views
0

私-component.hbsのアクションを指定せずにトリガし、私は私の-component.jsで今エンバーはHBSで私のエンバーアプリのコンポーネントで

{{#my-grid gridInitialized="gridInstantiated" }} 

を持って、私はそれは、以下のアクションとして定義されています。

actions: { 
    gridInstantiated: function (myGrid) {  
    } 
} 

上記のアクションの構文はどのようにして動作しますか? "gridInstantiatedが" HBSで

  • 私-component.jsにおける通常のプロパティとして定義されていない具体的に

    1. 、それはただ、 "アクション" のキーワード

    なしで定義されています上記の2点がどのように作用するのか知りたかったのですか?

    *********ちょうど追加する************

    を編集し、私は私のグリッド・コンポーネントのinitの呼び出しに以下のコードを持っています。古典的なアクションで

    this.sendAction('gridInitialized', Ember.$.proxy(this, function() { 
        this.fetchData(); 
    })); 
    
  • +0

    私はあなたの質問を受けるかどうか分かりません。 'my-component.js'は、クラス定義の一部であるか、または外部コンテキストから渡されない限り、' gridInstantiated'プロパティを持ちません。あなたが '{{my-component gridInstantiated = something}}'のように外部からコンポーネントに値を渡すとします。しかし、 'gridInstantiated'というアクションは' action'ハッシュで定義されているので、あなたが上で説明したのと同じです。 'my-grid'コンポーネントは' gridInitialized'というプロパティを持っています。その値はプレーンストリング 'gridInstantiated"です。コンポーネントに直接渡すためです。それは普通の文字列でも関数でも動作でもない – Pavol

    答えて

    1

    、アクションをトリガするため、彼らは、これは、対応する文脈で機能アクションのハッシュ呼び出しでactionName機能を探しますthis.sendAction("actionName")を使用します。

    非常によく説明されていますhttps://embermap.com/notes/26-a-note-on-actions

    +0

    そのすばらしいリンクをありがとう...しかし、私のオリジナルの質問にはまだ接続しようとしています。私はコンポーネントのinitで何を持っているのかという質問を更新しました...トリックをして – testndtv

    +0

    はい。 'sendAction'はコンポーネントのアクションハッシュで利用可能な文字列と呼び出し関数を受け入れます。コントローラ/ルートの場合は、 'send'を使用します。 – kumkanillam

    +0

    「例2」の例/コンテキストを失うためのページ上のひねりリンク 「this」は定義されていません。しかし、incrementCounter()内の警告を[example-2/controller.js]に追加すると、実際に[object HTMLButtonElement]に警告します 何か問題があると思われますか? – testndtv

    関連する問題