CXAObservableサービス
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
CXAObservableサービスは、レンダリングが通信 するために必要なサポートを提供し、疎結合で独立し、使用中の他のレンダリングを認識しないようにします。基本的な概念はObserverデザイン パターンと似ていますが、状態を変更するObservableオブジェクトではなく、他のレンダリングがリッスンしているObservableを通じてイベントをトリガーできる個々のレンダリングである点が異なります。レンダリングはイベントをサブスクライブし、イベントが別のレンダリングによって生成されると、サブスクライバーにはCXAObservableを通じてイベントが通知されます。
内部的には、CXAObservableサービスはCustomObservableの実装を使用して、オブザーバブルのインスタンスを使用してサブスクライブおよび出力します。より複雑なシナリオをサポートするために、この実装をRxJs Subjectなどの他の実装と交換できます。
レンダリング間の通信は、レンダリングの初期化中に管理されます。たとえば、すべてのレンダリングが初期化される前にイベントが生成された場合 (CXAApplication.IsInitialized = false)、初期化中にレンダリングがイベントを発生させた場合に発生する可能性があり、すべてのレンダリングが初期化されるまで、イベントはキューに保持されます。キュー内のイベントは順番に出力されます。これにより、サブスクライバーが見逃したイベント(別のレンダリングがイベントを生成した後にイベントをサブスクライブするレンダリングなど)を防ぐことができます。

CXAObservableサービスは、次のメソッドを実行します。 CXACartContextと対話し、さまざまな 共有イベントを使用します。
|
方式 |
形容 |
コード |
|---|---|---|
|
イベントのサブスクライブ |
レンダリングは、メソッドを実行するためにイベントをサブスクライブします。使用されるメッセージ・パラメーターは、emitEvent関数が呼び出されたときに何が渡されるかによって異なります。 リスナーはevent引数で呼び出されます。引数は、イベントに対して出力されたオブジェクトのタイプに基づいて処理されます。 このメソッドはサブスクライバーを返します。 |
どこ: CXAEvent.SendMessageはイベント名です。 function (message) はリスナーです |
|
イベントを発行する |
レンダリングでは、文字列または任意の種類のオブジェクトであるイベントが発行されます。ベスト プラクティスは、すべてのリスナーが処理できる各イベントに対して一貫した型を用意することです。 |
|
|
製品の登録 |
レンダリングは、メソッドを実行するために、特定の製品IDに関連付けられているすべてのイベントをサブスクライブします。 リスナーは、次の2つの引数で呼び出されます。
サブスクライバーを返します。 |
どこ: ProductEventHandlerはリスナーです。 |
|
製品イベントの購読 |
レンダリングは、特定の製品IDに関連付けられたイベントをサブスクライブしてメソッドを実行します。リスナーはevent引数で呼び出されます。 |
どこ: ProductEventHandlerはリスナーです。 |
|
イベントの登録解除 |
レンダリングは、イベントのサブスクライブを解除します。 |
どこ: subscriberは、subscribeToEvent/subscribeToProduct/subscribeToProductEventが呼び出されたときに返されるオブジェクトです。 |
SXA Storefrontは、次の共有イベントを使用します。
|
出来事 |
形容 |
メソッド |
|---|---|---|
|
CXAEvent.ClearMessage |
メッセージの概要レンダリングに、表示されたメッセージを削除するように要求します。 |
リスニング
射出
|
|
CXAEvent.SendMessage |
メッセージの概要レンダリングにメッセージを表示するように要求します。 イベント引数: CXAMessageType列挙型:
|
リスニング
射出
|
|
CXAEvent.CartUpdated |
最新のカートを受信したときにイベントを発行します。このイベントは、コンテキストによって受信されたオブジェクトがCartJsonResult型であるたびにCXACartContextによって発行されます。 |
リスニング
射出
|
|
CXAEvent.SetPrice |
Product Priceレンダリングに、現在の製品バリアントまたは製品バンドル選択の価格を表示するように要求します。 イベント引数: |
リスニング
射出
|
|
CXAEvent.SelectedProduct |
製品バリアントが選択されたときにイベントを発行します。 |
リスニング
射出
|
|
CXAEvent.SelectedBundleProduct |
製品バンドルが選択されたときにイベントを発行します。 イベント引数: |
リスニング
射出
|
|
CXAEvent.SelectedProductValid |
現在の製品選択が有効であることを示すイベントを発行し、カートに追加レンダリングで カートに追加 ボタンを有効にできるようにします。 |
リスニング
射出
|
|
CXAEvent.SelectedProductInvalid |
現在の製品選択が有効であることを示すイベントを発行し、カートに追加レンダリングで カートに追加 ボタンを無効にできるようにします。 |
リスニング
射出
|
|
CXAEvent.BundleStockStatusValid |
現在のバンドル選択の在庫ステータスが有効であることを示すイベントを発行し、製品バンドルがバンドル選択の価格を要求できるようにします。 イベント引数: |
リスニング
射出
|
|
CXAEvent.GetStockInfo |
Product Inventoryレンダリングは、APIエンドポイント から応答を受信したときにこのイベントCatalog/GetCurrentProductStockInfo発行します。 イベント引数: |
リスニング
射出
|
|
CXAEvent.DiscountApplied |
CXACartContextサービスは、APIエンドポイント ( Cart/ApplyDiscount) を呼び出した後にイベントを発行します。 |
リスニング
射出
|
|
CXAEvent.DiscountRemoved |
CXACartContextサービスは、APIエンドポイント ( Cart/RemoveDiscount) を呼び出した後にイベントを発行します。 |
リスニング
射出
|