問題タブ [ember-components]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ember.js - 無関係なコンポーネントとの Ember ルート通信
EmberJS が「データはダウン、アクションはアップ」を促進することは知っていますが、そのパラダイムにどのように適合するかわからないというシナリオがあります。私が達成しようとしていることに類似した例で説明するのが最善です。
固定ヘッダー コンポーネント (' fixed-header
') があるとします。このヘッダーを常に表示したいので、もちろんメインのアプリケーション テンプレートに追加します。
ここで、現在のルートに関する情報をヘッダーに表示したいとしましょう。簡単にするために、各ルートの固定ヘッダーに表示したいタイトルがあるとします。したがって、私がオンであろうとなかろうと、/foo
そのルートがデータをコンポーネントに送信して表示できるようにしたいと考えています。つまり、「データダウン」に逆らって「データアップ」をしたいのです。/foo/bar/baz
/wackawacka/meh?cat=meow
fixed-header
これにアプローチする理想的な方法は何ですか?私の最初の本能は、my-header
リッスンし、ルートが情報を投稿できるサービスを作成することでした。しかし、それは正しいことですか?ちょっとしたテキストを送信するためだけにサービスを作成するのは奇妙に思えます。別の方法はありますか?
ember.js - コンポーネント シムにすべてを記述する代わりに、ルート クロージャ アクションを表す方法はありますか?
私はember-route-action-helperを使用しています
次のようなコンポーネント シムがあります。
PS上記のアクションは実際のアクション名を使用していません
ルートにバブリングする必要がある多くのアクションがあり、ember アプリではコントローラーを使用しません。
アクションが多すぎるため、これは少しぎこちなく見えます。.hbs
この同じ情報を別の形式で表現したり、コンポーネントファイルまたはファイルの別の場所に書き込む方法はあり.js
ますか?
javascript - Ember.js コンポーネント統合テスト: グローバル インジェクションとネストされたコンポーネントを操作するには?
シナリオ: 実際のサービスを使用してコンポーネント A を統合テストしたいと考えていますmy-service
。すべてのコンポーネントにサービスをグローバルに注入する初期化子があります: application.inject('component', 'myService', 'service:my-service');
. コンポーネント A はそのテンプレートでコンポーネント B を使用myService
し、両方ともテンプレートで使用します。
グローバル インジェクションを再作成するにはどうすればよいですか? 完全なアプリケーションはありません。必要なパラメーターがないため、実際のイニシャライザーをインポートして実行することはできません。this.inject.service
グローバルアプリケーションコンテキストではなく、テストコンテキストに挿入するため、機能しません。
すべてのコンポーネントのテンプレートを変更して、サービスをずっと下にチェーンすることができます: {{b-component myService=myService}}
、そして
しかし、それは最後の手段です。また、グローバル インジェクションを取り除き、すべてのコンポーネントに手動でインジェクトすることもできます。それも最終手段です。
この問題の話をhttps://github.com/emberjs/ember.js/issues/12277まで追跡しました。それはほぼ実装されましたが、Grand Testing Unification https://github.com/emberjs/rfcs/pull/119を支持して閉鎖されました。グランドテストの統一を待っている間に解決策はありますか?