コンポーネント・インスタンスは、コンポーネント・ファクトリ・オブジェクトによって作成されます。
コンポーネント登録ファイル内のコンポーネント・ファクトリ・オブジェクト・エントリは、initData.componentFactory
です。これは、RequireJSでコンポーネント・ファクトリのロードに使用される、JavaScriptファイルへの参照です。これは、componentFactory
インタフェースを実装するJavaScriptオブジェクトを返す必要があります
コンポーネント・ファクトリ・オブジェクトは、コンポーネントの各インスタンスを作成する、customComponentFactory.createComponent(args)
というAPIを実装する必要があります。
args
には、次のような設定が含まれます:
SitesSDK
: Oracle Content ManagementのサイトSDK。
id
: ページに追加されたコンポーネントの一意のID (GUID
)。
viewMode
: ページがレンダリングされている現在のモード。ページが編集中の場合、それは「編集」です。ページがプレビュー中の場合、それは「ナビゲート」です。ランタイム時(サイトの公開時)には、この値は定義されていません。各モードで公開する必要がある機能に基づいて、様々な実装を提供できます。たとえば、リンクは、ページが編集モードで実行されているときはアクティブにできません。
注:
コンポーネントにJQueryまたはKnockoutを使用する必要はありませんが、ネストされたコンポーネントなどのOracle Content Management機能を活用するには、Oracle Content Managementから提供されるKnockoutのバージョンを使用する必要があります。このバージョンのKnockoutでは、コンポーネント登録およびハンドラが拡張されています。それらは、それ以外では利用できません。コンポーネント自体については、コンポーネントがページ・ライフサイクルとやり取りできるようインスタンス化されるときに、SDKが渡されます。ページ・ライフサイクル関数は、コンポーネントによって実装され、コンポーネントをページ上にレンダリングするためにOracle Content Managementによってコールされる必要があります。
コンポーネントを実装するために、必須およびオプションのAPIが提供されています。
必須のAPI
customComponent.render(container)
: コンポーネントに、提供されたDOMコンテナ要素にそれ自体を挿入するよう指示します。
container
: カスタム・コンポーネントHTMLのDOMコンテナ要素。
オプションのAPI
customComponent.dispose()
: コンポーネントがページから削除されているときにコールされます。必要なくなったリソースをコンポーネントで削除する機会を提供します。