CXAObservableサービス

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

CXAObservableサービスは、レンダリングが通信 するために必要なサポートを提供し、疎結合で独立し、使用中の他のレンダリングを認識しないようにします。基本的な概念はObserverデザイン パターンと似ていますが、状態を変更するObservableオブジェクトではなく、他のレンダリングがリッスンしているObservableを通じてイベントをトリガーできる個々のレンダリングである点が異なります。レンダリングはイベントをサブスクライブし、イベントが別のレンダリングによって生成されると、サブスクライバーにはCXAObservableを通じてイベントが通知されます。

内部的には、CXAObservableサービスはCustomObservableの実装を使用して、オブザーバブルのインスタンスを使用してサブスクライブおよび出力します。より複雑なシナリオをサポートするために、この実装をRxJs Subjectなどの他の実装と交換できます。

レンダリング間の通信は、レンダリングの初期化中に管理されます。たとえば、すべてのレンダリングが初期化される前にイベントが生成された場合 (CXAApplication.IsInitialized = false)、初期化中にレンダリングがイベントを発生させた場合に発生する可能性があり、すべてのレンダリングが初期化されるまで、イベントはキューに保持されます。キュー内のイベントは順番に出力されます。これにより、サブスクライバーが見逃したイベント(別のレンダリングがイベントを生成した後にイベントをサブスクライブするレンダリングなど)を防ぐことができます。

Sequence diagram illustrating the calls that occur

CXAObservableサービスは、次のメソッドを実行します。 CXACartContextと対話し、さまざまな 共有イベントを使用します。

方式

形容

コード

イベントのサブスクライブ

レンダリングは、メソッドを実行するためにイベントをサブスクライブします。使用されるメッセージ・パラメーターは、emitEvent関数が呼び出されたときに何が渡されるかによって異なります。

リスナーはevent引数で呼び出されます。引数は、イベントに対して出力されたオブジェクトのタイプに基づいて処理されます。

このメソッドはサブスクライバーを返します。

CXAObservable.subscribeToEvent(CXAEvent.SendMessage,
function (message) {

// Do something with the message

console.log(message);

});

どこ:

CXAEvent.SendMessageはイベント名です。

function (message) はリスナーです

イベントを発行する

レンダリングでは、文字列または任意の種類のオブジェクトであるイベントが発行されます。ベスト プラクティスは、すべてのリスナーが処理できる各イベントに対して一貫した型を用意することです。

CXAObservable.emitEvent(CXAEvent.SendMessage, "This parameter can be a string"); CXAObservable.emitEvent(CXAEvent.SendMessage, { message: "This parameter can be any object" });

製品の登録

レンダリングは、メソッドを実行するために、特定の製品IDに関連付けられているすべてのイベントをサブスクライブします。

リスナーは、次の2つの引数で呼び出されます。

  • イベント名

  • イベント引数

サブスクライバーを返します。

CXAObservable.subcribeToProduct(productid,ProductEventHandler);

どこ:

ProductEventHandlerはリスナーです。

製品イベントの購読

レンダリングは、特定の製品IDに関連付けられたイベントをサブスクライブしてメソッドを実行します。リスナーはevent引数で呼び出されます。

CXAObservable.subcribeToProduct(productId, ProductEventHandler);

どこ:

ProductEventHandlerはリスナーです。

イベントの登録解除

レンダリングは、イベントのサブスクライブを解除します。

CXAObservable.unsubscribeFromEvent(subscriber);

どこ:

subscriberは、subscribeToEvent/subscribeToProduct/subscribeToProductEventが呼び出されたときに返されるオブジェクトです。

SXA Storefrontは、次の共有イベントを使用します。

出来事

形容

メソッド

CXAEvent.ClearMessage

メッセージの概要レンダリングに、表示されたメッセージを削除するように要求します。

リスニング

  • メッセージの概要

射出

  • お買い物カゴに加える

  • チェックアウト請求

  • チェックアウトレビュー

  • カートライン

  • 製品バンドル

  • 製品バリエーション

CXAEvent.SendMessage

メッセージの概要レンダリングにメッセージを表示するように要求します。

イベント引数:

{
  type:
CXAMessageType,
  message: String
}

CXAMessageType列挙型:

  • 情報

  • エラー

  • 警告

リスニング

  • メッセージの概要

射出

  • 製品バンドル

  • 製品在庫

  • 製品バリエーション

CXAEvent.CartUpdated

最新のカートを受信したときにイベントを発行します。このイベントは、コンテキストによって受信されたオブジェクトがCartJsonResult型であるたびにCXACartContextによって発行されます。

リスニング

  • 無料ギフトセレクション

  • カートライン

  • ミニカート

  • カートプロモーション

  • カート合計

射出

  • 無料ギフトセレクション

  • カートライン

  • ミニカート

  • CXACartContext(CXACアートコンテキスト)

CXAEvent.SetPrice

Product Priceレンダリングに、現在の製品バリアントまたは製品バンドル選択の価格を表示するように要求します。

イベント引数:

{
  productId: String,
  listPrice: Number,
  adjustedPrice:
Number,
  isOnSale: Boolean,
  savingsMessage:
String
}

リスニング

  • 商品価格

射出

  • 製品バンドル

  • 製品バリエーション

CXAEvent.SelectedProduct

製品バリアントが選択されたときにイベントを発行します。

Event argument:
{
  CurrentCatalogName:
String,
  CurrentProductId:
String,
  CurrentVariantId:
String
}

リスニング

  • お買い物カゴに加える

  • 製品在庫

射出

  • 製品バリエーション

CXAEvent.SelectedBundleProduct

製品バンドルが選択されたときにイベントを発行します。

イベント引数:

{
  bundleSelection:
BundleSelection
}

リスニング

  • お買い物カゴに加える

  • 製品在庫

射出

  • 製品バンドル

CXAEvent.SelectedProductValid

現在の製品選択が有効であることを示すイベントを発行し、カートに追加レンダリングで カートに追加 ボタンを有効にできるようにします。

リスニング

  • お買い物カゴに加える

射出

  • 製品バンドル

  • 製品在庫

  • 製品バリエーション

CXAEvent.SelectedProductInvalid

現在の製品選択が有効であることを示すイベントを発行し、カートに追加レンダリングで カートに追加 ボタンを無効にできるようにします。

リスニング

  • お買い物カゴに加える

射出

  • 製品バンドル

  • 製品在庫

  • 製品バリエーション

CXAEvent.BundleStockStatusValid

現在のバンドル選択の在庫ステータスが有効であることを示すイベントを発行し、製品バンドルがバンドル選択の価格を要求できるようにします。

イベント引数:

{
  productId: String
}

リスニング

  • 製品バンドル

射出

  • 製品在庫

CXAEvent.GetStockInfo

Product Inventoryレンダリングは、APIエンドポイント から応答を受信したときにこのイベントCatalog/GetCurrentProductStockInfo発行します。

イベント引数:

{
  productId: String,
  stockInfos: Array
}

リスニング

  • 製品バンドル

射出

  • 製品在庫

CXAEvent.DiscountApplied

CXACartContextサービスは、APIエンドポイント ( Cart/ApplyDiscount) を呼び出した後にイベントを発行します。

リスニング

  • カートライン

  • カートプロモーション

  • カート合計

射出

  • CXACartContext(CXACアートコンテキスト)

CXAEvent.DiscountRemoved

CXACartContextサービスは、APIエンドポイント ( Cart/RemoveDiscount) を呼び出した後にイベントを発行します。

リスニング

  • カートライン

  • カートプロモーション

  • カート合計

射出

  • CXACartContext(CXACアートコンテキスト)

この記事を改善するための提案がある場合は、 お知らせください!