Instancja składnika jest tworzona przy użyciu obiektu "Component Factory".
Wpisem obiektu "Component Factory" w pliku rejestracji składnika jest initData.componentFactory
. Stanowi on odwołanie do pliku JavaScript używanego przez RequireJS do załadowania obiektu "Component Factory". Musi zwracać obiekt JavaScript implementujący interfejs componentFactory
.
Obiekt "Component Factory" musi implementować interfejs API customComponentFactory.createComponent(arg)
, tworzący poszczególne instancje składnika.
W arg
są zawarte następujące ustawienia:
SitesSDK
: Oracle Content Management Sites SDK.
id
: Unikatowy ID (GUID
) składnika dodawanego do strony.
viewMode
: Bieżący tryb renderowania strony. Jeśli strona jest edytowana, wartością jest "Edit". Jeśli jest wyświetlany podgląd strony, wartością jest "Navigate". W trybie wykonawczym, gdy serwis został opublikowany, wartość ta jest niezdefiniowana. Można udostępniać różne implementacje, bazując na funkcjonalności eksponowanej dla poszczególnych trybów. Na przykład, gdy strona działa w trybie edycji, łącza nie powinny być aktywne.
Uwaga:
Używanie bibliotek JQuery lub Knockout dla składnika nie jest wymagane, ale — zamierzając korzystać z funkcji Oracle Content Management, takich jak zagnieżdżanie składników — trzeba używać biblioteki Knockout w wersji udostępnianej przez Oracle Content Management. Wersja ta zapewnia rozbudowaną rejestrację składników oraz rozszerzone procedury obsługi, które w przeciwnym razie byłyby niedostępne.W zakresie samego składnika biblioteka SDK jest przekazywana, gdy jest tworzona instancja składnika, dzięki czemu składnik może się komunikować z funkcjami cyklu życia strony. Funkcje cyklu życia muszą zostać zaimplementowane przez składnik — są wywoływane przez Oracle Content Management w celu wyrenderowania składnika na stronie.
Są udostępniane wymagane i opcjonalne API umożliwiające implementację składnika.
Wymagane API
customComponent.render(container)
: Zleca składnikowi, aby sam się wstawił do udostępnianego elementu kontenera DOM.
container
: Element kontenera DOM dla kodu HTML składnika niestandardowego.
Opcjonalne API
customComponent.dispose()
: Wywoływane, gdy składnik jest usuwany ze strony. Umożliwia składnikowi usunięcie wszystkich zasobów, które już nie są potrzebne.