は、だから私は、これは持っている...Emberコンポーネントのプロパティを別のコンポーネントから設定するにはどうすればよいですか?
application.hbsを使用すると、EnabledプロパティをTrueに設定するときに開くようになっているモーダルウィンドウのコンポーネントを持っているこのアプリの一部を作成しました:
モーダルで{{#modal-window enabled=true title="Manage Admins"}}
{{/modal-window}}
-window.js私はthis.set('enabled',false)
を行う同様のcloseModalアクションを持っており、同様にそれを開くにはtrueに設定します。
などさまざまなコンポーネントのヘルプリンク、管理者リンク、管理リンクを使用して、アプリの下部にあるナビゲーションメニューも独自HBSとのjsファイルとコンポーネントであります。これがアプリのデザイン方法です。 index.hbsの下部には:
<div class="configs-list-footer">
{{help-link}}
{{admin-link action='showModal'}}
<div class="logout-link">
<a {{action 'invalidateSession'}} class="tv-icon">
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><g transform="translate(1.000000, 1.000000)"><path d="M0.347826087,8 L10.7826087,8"></path><polyline id="Stroke-937" points="8 5.2173913 10.7826087 8 8 10.7826087"></polyline><path d="M1.03123478,4.83526957 C2.23471304,2.18831304 4.90253913,0.347617391 8.00027826,0.347617391 C12.2263652,0.347617391 15.6524522,3.77370435 15.6524522,7.9997913 C15.6524522,12.2258783 12.2263652,15.6519652 8.00027826,15.6519652 C4.88862609,15.6519652 2.21036522,13.7952696 1.01453913,11.1288348"></path></g></g></svg>
<span>Logout</span>
</a>
</div>
アクション管理者-link.jsファイル内のアクションが呼び出されますが、真に有効に設定するには、モーダルウィンドウを言うする方法はないように思えます任意のプログラムの基本機能であるそれ自身の外側から。
インターネットを検索した後、私の人生のためにできないのは、admin-linkコンポーネント(これは基本的にアンカータグです)をクリックすると、modal-windowの 'enabled'プロパティをtrueに設定する方法です)..
私はインデックスのルートからアクションを呼び出す方法を見出したが、その後、ちょうどと成分を持つように私は、インデックスのルートからのモーダルウィンドウのプロパティを変更する方法を見つけ出すことはできません。
いつでも誰でもオンライン彼らは「コンポーネントが単離され、他のすべてを知らないしなければならない」UIのための基本的なので、何かをする明白な方法とで満たされているこれを行う方法を尋ねます。私はエンバー2.12.1
私はモーダルウィンドウ自体に条件付きですが、それは良い考えです。それから私は、コンポーネントからではなく、ルート自体からその状態を操作することができます。今後の目的のために私の質問に対する答えを見たいと思うでしょう。私たちの全アプリはEmberに外部の請負業者によって建てられました。私はそれをうまく学ばなければなりません。 –
私はそこにこのコードを入れましたが、manageAdminsIsOpenを定義する場所がわかりません。インデックスルートのアクションからthis.set( 'manageAdminsIsOpen')を設定すると仮定していますが、動作させることができません。 –
私はこれと非常に混同しています。私はapplication.hbs、application.js、index.js、index.hbs、および他のファイルの大部分を持っています。公式のemberのdocsのように、コードを入れるファイルは決してありません。 isManageAdminsはEVERY JSファイル内にEmber拡張セクション内のオブジェクトのプロパティとして、またはそのブロックの外のjavascript内にあり、どこに配置しても関係なく機能しません。ブロックに定義すれば "manageAdminsIsOpen"を入れるだけですか?どこかで明示的に定義する必要がありますか? –