このページでは、https://github.com/emberjs/ember.js/issues/11043という素晴らしい例を見て、コンポーネントから継承する方法を説明します。ここでは一例です:http://emberjs.jsbin.com/rwjblue/443/edit?html,css,js,outputEmberJSコンポーネントのコンテキストを設定する方法は?
私は少しを果たし、特にアクションを持つと、この質問に来る:
私はコンポーネントのコンテキストを設定できますか?
は、次の例を検討:
http://emberjs.jsbin.com/cofobanoca/edit?html,css,js,output
と彼らはほとんど同じ第2のリンクのものを除いてあり、それの派生
http://emberjs.jsbin.com/gipawemipe/1/edit?html,css,js,output
を、コンポーネントを動的に作成されます行動の中で
私の質問は、第2の例の{{this}}
が「App.XBarComponent」ではなく「生成されたアプリケーションコントローラ」である理由です。
編集: 多分私は明確ではありませんでした。
私が達成したいのは、入力フィールドを含むモーダルをレンダリングすることです。これはアプリケーションテンプレート内で(アウトレットを使用して)ページ全体のポップアップとしてレンダリングする必要があります。 Modalは、fooとbarのような2つのコンポーネントで構築されています。 BaseModal(Foo)とLoginModalContent(Bar)はより良い名前です。
OK(これはBaseModalで定義されています)をクリックすると、LoginModalContentのOKアクションを呼び出して、(LoginModalContentで定義されている)フォームの値を取得することができます。 this.get( 'username')。
"コンテキスト"とはどういう意味ですか? –
テンプレート内の '{{this}}'を意味します。 – Charles
'this'はテンプレートを駆動するオブジェクトです。ルートに関連付けられた最上位テンプレートの場合、たとえば、コントローラになります。コンポーネントに関連付けられたテンプレートの場合は、それがコンポーネントになります。あなたはそれを自分で設定しません。 –