En komponent kan indeholde triggere, der kører handlinger i andre komponenter. Du skal registrere triggere, som skal udløses af komponenter.
Komponenten leverer et payload til en trigger, som videregives til enhver handling, der udføres, når triggeren udløses. Du kan vælge, hvilke handlinger der udføres for hver trigger. Komponenter, der er bygget til at virke sammen, kan automatisk udløse triggere for at udføre handlinger uden brugerinteraktion.
Registrere triggere
For en tilpasset komponent registreres triggere som en del af registreringsdataene til komponenten. Du kan tilføje en trigger ved at opdatere egenskabs-array'en "triggers"
med hver trigger, som komponenten understøtter. Du skal angive det payload, som triggeren understøtter, så brugergrænsefladen kan oprettes med mulighed for, at brugerne kan mappe værdier i det payload til egenskaber, der understøttes af handlingen.
appinfo.json
, og revider posten "triggers":[],
:
"triggers": [{ "triggerName": "helloWorldWhoAreYou", "triggerDescription": "Show Who I Am", "triggerPayload": [{ "name": "whoAreYou", "displayName": "Who I Am" }] }],
Synkroniser filen til siteserveren.
I dette eksempel på en trigger-post har du defineret et triggerName
("helloWorldWhoAreYou"
). Navneværdien skal være entydig. Du har derefter givet triggeren en beskrivelse ("Show Who I Am"
), der benyttes i brugergrænsefladens dialogboks til at vise din trigger. Endelig har du defineret en enkelt payload-værdi for triggeren. Brugerne kan vælge poster i dette payload og mappe dem til felter i handlingen.
Når en trigger er registreret, skulle du kunne se og vælge triggere, når du går til fanen the Link i indstillingspanelet for din komponent.
Udløse triggere
Triggere kan udløses ved ethvert punkt af en komponent. En trigger udløses typisk af en brugerinteraktion som et klik på en knap eller valg af en række i en tabel. En komponent kan udløse triggeren på basis af kriterier, for eksempel når data ændres på grund af et REST-API-kald. Du kan udføre ethvert antal handlinger, når en trigger udløses.
render.js
, og tilføj en JavaScript-funktion i objektet viewModel
, som kalder Sites-SDK for at udløse triggeren.
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': 'helloWorldWhoAreYou', 'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"} }); };
-edit template.html
), og en knap foran </div>
.
<button data-bind="click raiseTrigger">Who Am I?</button>
Synkroniser eller upload filen render.js
til din Oracle Content Management-instansserver.
I objektet ViewModel
har du oprettet en JavaScript-funktion, der kaldes, når der klikkes på knappen. Denne funktion kalder Sites-SDK for at få udløst alle de handlinger, som er defineret for denne trigger, "helloWorldWhoAreYou"
. Den passerer også gennem et triggerPayload
, som har et enkelt felt, "whoAreYou"
. Værdierne "helloWorldWhoAreYou"
og "whoAreYou"
matcher dem, som du har indtastet under registreringen af triggeren i det foregående trin.
Bemærk:
Der er ingen foruddefineret rækkefølge for, hvornår en handling udføres. Selvom hver handling kaldes i dens rækkefølge på listen, ventes der ikke på, at den er fuldført, før den næste handling kaldes. Hvis en handling foretager et asynkront kald, bliver den måske ikke fuldført, før den næste handling udføres.