Helfer: UI Builder
Die Helfer Die API bietet allgemeine Funktionen, die in allen Seitenskripts üblich sind, sodass Skripts für einfache Funktionen wie das Öffnen und Schließen eines modalen Elements nicht mehr geschrieben werden müssen.
- Wertskripts der Komponenteneigenschaft
- Skripts für Komponentensichtbarkeit
- Ereignisnutzlastskripts
- UX-Client-Skripteinbindungen
Helpers – helpers.modal.close(Zeichenfolge modalId)
Schließt das angegebene modale Element auf der aktuellen Seite.
| Name | Typ | Beschreibung |
|---|---|---|
| modalId | Zeichenfolge | ID der modalen Komponente des zu schließenden modalen Elements. Komponenten-IDs werden automatisch generiert, wenn eine Komponente per Drag-and-Drop auf verschoben wird UI BuilderPhase. Sie können die ID auf der Eigenschaftenseite suchen. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt das Schließen eines modalen Elements mit einer Komponenten-ID, die mit endet Warnungsmodal .
function handler({api, event, imports, helpers}) {
helpers.modal.close("[component-id$='alert_modal']")
}
Helpers – helpers.modal.Open(Zeichenfolge modalId, Objektoptionen)
Öffnet das angegebene modale Element auf der aktuellen Seite.
Sie können jeweils nur ein modales Element innerhalb einer Seite anzeigen. Wenn derzeit ein modales Element geöffnet ist und Sie diese Methode aufrufen, wird das vorhandene modale Element ausgeblendet, und das neue modale Element wird angezeigt.
| Name | Typ | Beschreibung |
|---|---|---|
| modalId | Zeichenfolge | Komponenten-ID des zu öffnenden modalen Elements. Komponenten-IDs werden automatisch generiert, wenn eine Komponente per Drag-and-Drop auf verschoben wird UI BuilderPhase. Sie können die ID auf der Eigenschaftenseite suchen. |
| Optionen | Objekt | Optional. |
| Optionen.Inhalt | Zeichenfolge | Textinhalt für das Modal. |
| Options.contentVollbreite | Boolean | Kennzeichnung, die angibt, ob der horizontale Abstand um den Textkörper des Modals entfernt werden soll, um breiteren Inhalt anzupassen. Gültige Werte:
Standard: Falsch |
| Optionen.headerBezeichnung | Zeichenfolge | Textinhalt für den modalen Header. |
| Optionen.Größe | Zeichenfolge | Größe des modalen Containers. Die meisten Größen werden automatisch erweitert, um den Viewport auszufüllen, wenn die Bildschirmgröße klein ist. Gültige Werte:
Standard: sm |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt das Öffnen eines modalen Elements mit CA-omponent-ID, das mit endet Warnungsmodal .
function handler({api, event, imports, helpers}) {
helpers.modal.open("[component-id$='alert_modal']")
}
Helfer – helpers.navigate.setRouteParams(Object Parameter)
Übergibt die angegebenen Parameter an andere Komponenten auf derselben Seite.
Verwenden Sie diese Methode in jeder Seitenkomponente, die einen Parameter in einer URL hinzufügen möchte. Möglicherweise möchten Sie einer URL einen Parameter hinzufügen, wenn eine andere Komponente den aktuellen Wert dieses Parameters kennen muss, wenn sie sich ändert, damit sie darauf reagieren kann. Verwenden Sie diese Methode beispielsweise, um zu übergeben Ausgewählter Index Einer Registerkartenkomponente, sodass sie in der URL widergespiegelt wird, um dieser Registerkarte den Fokus zu geben.
| Name | Typ | Beschreibung |
|---|---|---|
| params | Objekt | Schlüssel-Wert-Paare optionaler Parameter, die an andere Komponenten übergeben werden sollen. Dies muss ein einfaches, flaches Objekt mit nur primitiven Werten sein. Array- oder Objektreferenzen werden ignoriert und der URL nicht hinzugefügt. Alle angegebenen Schlüssel müssen Teil der optionalen Parameter in der Routenkonfiguration sein, oder sie werden ebenfalls ignoriert. Weitere Informationen zu optionalen Parametern finden Sie unter Erstellen Sie eine Seite in UI Builder. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Codebeispiel zeigt, wie die URL angehängt wird Parameter/selected-tab-index/2 . Beachten Sie, dass der Parameter in der tatsächlichen URL von Kamelfall in Schlangenfall geändert wird AusgewählteTabIndex Wird Selected-tab-index .
function handler({api, event, helpers, imports}) {
helpers.navigate.setRouteParams({'params': {'selectedTabIndex': 2}});
}
Helpers – helpers.Navive.to(Zeichenfolgenroute, Objektfelder, Objektparameter, boolesche Umleitung, boolesche PassivNavigation, Zeichenfolge targetRoute)
Navigiert basierend auf der angegebenen Route und den Feldinformationen von einem Bildschirm zum anderen. URL-Änderungen und die jeweiligen Bildschirmlasten werden beobachtet.
| Name | Typ | Beschreibung |
|---|---|---|
| Route | Zeichenfolge | Name der Route. Muss ein gültiger Eintrag aus UX-App-Routen (sys_ux_app_route.list) sein. Dieser Wert wird in der URL widergespiegelt, und die URL wird basierend auf erstellt route, fields, Und optionalParamsSpaltenwerte: /<route>/<field1Value>/{<field2Value>/params/<optionalParamKey1>/<optionalParamValue1>/<optionalParamKey2>/<optionalParamValue2> Beispiel: |
| Felder | Objekt | Optional. Schlüssel-Wert-Paare der erforderlichen Parameter. Beispiel: „Felder“ : {'table': 'Incident', 'sysId': '12345'} . |
| params | Objekt | Optional. Schlüssel-Wert-Paare optionaler Parameter. Beispiel: „Parameter“ : {'selectedTabIndex': 4} . |
| umleiten | Boolean | Kennzeichnung, die angibt, ob der neueste Verlaufseintrag aus dem Browserverlauf entfernt werden soll. Beispiel: Wenn Sie zu den Standorten A, B und dann C. navigieren, wenn redirectIst auf festgelegt Wahr Beim Navigieren zu C wird der Verlaufseintrag für B entfernt. Im Browserverlauf werden nur A und C angezeigtGültige Werte:
Standard: Falsch |
| passiveNavigation | Boolean | Kennzeichnung, die angibt, ob die Hintergrundnavigation ausgeführt werden soll. Die Hintergrundnavigation ist, wenn eine Seite geöffnet, aber nicht aktiv oder angezeigt wird. Beispielsweise wird eine inaktive Registerkarte für die Seite geöffnet, die jedoch nicht sichtbar ist, aber im Hintergrund geladen wird. Gültige Werte:
Standard: Falsch |
| targetRoute | Zeichenfolge oder Objekt | Unternavigation zu einem Drilldown, einem Deep-Link oder einer Unterregisterkarte. Wenn auf festgelegt Aktuell , Die aktuelle Route führt eine Unternavigation unter der aktuellen URL durch. Beispiel: Wenn
Die folgende URL wird generiert: Hinweis: targetRouteKann entweder eine Zeichenfolge wie sein „Aktuell“ Oder ein Objekt, z. B. Nutzlast Navigation NAV_ITEM_SELECTED . |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, die nur übergeben wird routeParameter.
function handler({api, event, imports, helpers}) {
helpers.navigate.to('test');
}
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, die übergeben wird routeUnd fieldsParameter.
function handler({api, event, imports, helpers}) {
helpers.navigate.to('test', {'key': 'value'});
}
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, die übergeben wird route, fields, Und paramsParameter.
function handler({api, event, helpers, imports}) {
helpers.navigate.to('test', {'key': 'value'}, {'first': 'FirstName', 'last': 'Last Name'});
}
Helpers – helpers.screen.updateStatus(Object statusObj)
Ermöglicht Seiten, ihre Statusaktualisierungen zu melden, z. B. Titel, Symbol, fehlerhafter Status, Nachricht, und Fehleränderungen.
Statusaktualisierungen werden an WorkspaceChrome oder AppShell gemeldet, je nachdem, was die äußere Ebene ist und als Host fungiert.
| Name | Typ | Beschreibung |
|---|---|---|
| StatusObj | Objekt | Nutzlast, die an die aktuelle Seite gesendet werden soll, um zu melden, dass der Inhalt aktualisiert wurde. Gültige Werte:
|
| Typ | Beschreibung |
|---|---|
| Keine |
screen.updateStatus({'dirtyModalId': 'customModalId', 'isDirty': true});
Helpers – helpers.snHttp(Zeichenfolgen-url, Objektoptionen)
Stellt eine HTTP-Anforderung an an ServiceNowInstanz und gibt eine Zusage mit den Ergebnissen zurück.
{
options: {},
otherFields: {}
}
becomes
{
otherFields: {}
}| Name | Typ | Beschreibung |
|---|---|---|
| URL | Zeichenfolge | HTTP-Endpunkt relativ zur Instanz-URL. Beispiel: /api/now/table/Incident Oder /api/now/table/Incident/a83820b58f723300e7e16c7827bdeed . |
| Optionen | Objekt | Beschreibt den Inhalt der HTTP-Anforderung. |
| Optionen.Batch | Boolean | Optional. Kennzeichnung, die angibt, ob diese HTTP-Anforderung mit anderen HTTP-Anforderungen an die Instanz kombiniert werden soll. Gültige Werte:
Standard: Wahr |
| Optionen.Text | Objekt | Optional. Daten, die als Anforderungstext gesendet werden sollen. Gilt nur für Anforderungsmethoden PLATZIEREN , VERÖFFENTLICHEN , Und PATCH . Elemente im Objekt hängen vom Typ der HTTP-Methode ab. Details finden Sie in den Codebeispielen unten.Standard: |
| Optionen.Header | Objekt | Optional. Zusätzliche HTTP-Anforderungsheader. Zum Beispiel: |
| Optionen.Methode | Zeichenfolge | Optional. HTTP-Methode. Gültige Werte:
Standard: GET |
| Typ | Beschreibung |
|---|---|
| Fehler | Objekt, das einen Fehler beschreibt, der von der REST-API zurückgegeben wird. Datentyp: Objekt |
| Fehler.Daten | Antwort, die von der HTTP-API zurückgegeben wird. Datentyp: Definiert durch REST-API |
| Fehler.Nachricht | Nachricht, die den beim Verarbeiten der HTTP-Anforderung aufgetretenen Fehler beschreibt. Hinweis:
Dieser Parameter wird nicht immer zurückgegeben. Datentyp: Zeichenfolge |
| Fehler.Optionen | Beschreibt die ursprüngliche HTTP-Anforderung. Datentyp: Objekt |
| Fehler.Optionen.Header | Objekt, das eine Liste aller in der Anforderung gesendeten Anforderungsheader enthält. Datentyp: Objekt |
| Fehler.Optionen.responseHeader | Objekt, das eine Liste aller in der Anforderung gesendeten Antwortheader enthält. Datentyp: Objekt |
| Fehler.Status | HTTP-Fehlerstatuscode zurückgegeben, z. B. 400, 405 oder 500. Datentyp: Zahl |
| Fehler.statusText | Zurückgegebene HTTP-Statusnachricht, z. B. Ungültige Anforderung . Datentyp: Zeichenfolge |
| Antwort | Wird zurückgegeben, wenn die HTTP-Anforderung erfolgreich ist. Die Antwort auf die HTTP-Anforderung. Datentyp: Beliebig |
Das folgende Beispiel zeigt, wie Sie anrufen SnHttp() Was eine Zusage zurückgibt.
function handler({api, event, helpers, imports}) {
helpers.snHttp('/api/now/table/u_movie', {method: 'GET'})
.then(({response}) => {
// do something with the table data
})
.catch(({error}) => {
const message = `Error: ${error.data.error.message}`;
console.error(message);
api.emit('NOW_UXF_PAGE#ADD_NOTIFICATIONS', {
id: 'alert5',
status: 'high',
icon: 'info-circle-outline',
content: message,
action: { type: 'dismiss' }
});
});
}
Das folgende Beispiel zeigt, wie Sie anrufen SnHttp() Wird verwendet Asynchron Und Warten .
async function handler({helpers}) {
try {
const result = await helpers.snHttp('/api/now/table/u_movie', {method: 'GET'});
} catch ({error}) {
const message = `Error: ${error.data.error.message}`;
console.error(message);
api.emit('NOW_UXF_PAGE#ADD_NOTIFICATIONS', {
id: 'alert5',
status: 'high',
icon: 'info-circle-outline',
content: message,
action: { type: 'dismiss' }
});
}
}
Das folgende Beispiel zeigt, wie eine POST-Anforderung eingerichtet wird.
function handler({api, helpers, event, imports}) {
helpers
.snHttp("/api/now/table/incident", {
method: "POST",
body: {
description: "Sample description",
close_notes: "Sample close notes",
order: "-1"
}
})
.then(({ response }) => {
// handle POST request response
})
.catch(({ error }) => {
// handle POST request errors
});
}
Das folgende Beispiel zeigt, wie eine PUT-Anforderung eingerichtet wird.
function handler({api, helpers, event, imports}) {
helpers
.snHttp("/api/now/table/incident/a83820b58f723300e7e16c7827bdeed2", {
method: "PUT",
body: {
activity_due: "1970-04-02 18:26:17"
},
headers: {
"Content-Type": "application/json",
"Accept": "application/xml"
}
})
.then(({ response }) => {
// handle PUT request response
})
.catch(({ error }) => {
// handle PUT request errors
});
}
Helpers – Helpers.Timing.ClearInterval(Number timeoutId)
Bricht die Ausführung der Funktion ab, die über einen vorherigen geplant wurde SetIntervall () Rufen Sie an.
| Name | Typ | Beschreibung |
|---|---|---|
| TimeoutId | Nummer | Eindeutiger Bezeichner der geplanten Funktion, die gelöscht werden soll. Dieser Wert wird von der entsprechenden zurückgegeben SetIntervall () Rufen Sie an. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt mit Clearing-Intervall () Dient zum Abbrechen eines Zeitvorgangs, der zuvor mit festgelegt wurde SetIntervall () Methode. Diese Funktion kann aufgerufen werden, indem ein Anwender auf klickt Automatische Aktualisierung deaktivieren Schaltfläche auf einer Seite.
function handler({api, helpers}) {
api.setState('intervalId', ({currentValue}) => {
if (currentValue > -1) {
helpers.timing.clearInterval(currentValue);
}
return -1;
});
}
Helpers – helpers.Timing.ClearTimeout(Number timeoutId)
Bricht die Ausführung der Funktion ab, die über einen vorherigen geplant wurde SetTimeout() Rufen Sie an.
| Name | Typ | Beschreibung |
|---|---|---|
| TimeoutId | Nummer | Eindeutiger Bezeichner der geplanten Funktion, die gelöscht werden soll. Dieser Wert wird von der entsprechenden zurückgegeben SetTimeout() Rufen Sie an. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Codebeispiel zeigt, wie ein Timer mit dem angegebenen beendet wird TimeoutId .
function handler({api, helpers}) {
api.setState('timeoutId', ({currentValue}) => {
if (currentValue > -1) {
helpers.timing.clearTimeout(currentValue);
}
return -1;
});
}
Helfer – helpers.timing.setInterval(Function FN, Nummernverzögerung)
Führt die angegebene Funktion wiederholt aus, wobei der angegebene Verzögerungswert als Intervall zwischen Funktionsaufrufen verwendet wird.
Im Gegensatz zum nativen JavaScript SetIntervall () Methode: Diese Methode unterstützt die Übergabe einer Codezeichenfolge zur Auswertung als erstes Argument nicht. Alle zusätzlichen Argumente werden an die Funktion selbst übergeben.
| Name | Typ | Beschreibung |
|---|---|---|
| fn | Funktion | Funktion, die wiederholt ausgeführt werden soll. |
| Verzögerung | Nummer | Länge des Zeitintervalls zwischen den einzelnen Funktionsausführungen. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Funktionsausführungsvorgangs. Verwenden Sie diesen Wert in Helpers – Helpers.Timing.ClearInterval(Number timeoutId)Methode, wenn Sie diesen Vorgang abbrechen müssen. |
Dieses Codebeispiel zeigt, wie der Zeitstempel auf einer Seite jede Sekunde aktualisiert wird. Diese Funktion kann aufgerufen werden, indem ein Anwender auf klickt Aktivieren Sie die automatische Aktualisierung Schaltfläche auf einer Seite.
function handler({api, helpers}) {
// Every one second, refresh the value of current timestamp client state parameter
const intervalId = helpers.timing.setInterval(() => {
api.setState('currentTimestamp', new Date().toString())
}, 1000);
// The interval ID is kept in state to use when calling the helpers.timing.clearInterval() method at a later point
api.setState('intervalId', intervalId);
}
Helfer – helpers.timing.setTimeout(Function FN, Nummernverzögerung)
Führt die angegebene Funktion nach der angegebenen Verzögerung aus.
Im Gegensatz zum nativen JavaScript SetTimeout() Methode: Diese Methode unterstützt die Übergabe einer Codezeichenfolge zur Auswertung als erstes Argument nicht. Alle zusätzlichen Argumente werden an die Funktion selbst übergeben.
| Name | Typ | Beschreibung |
|---|---|---|
| fn | Funktion | Auszuführende Funktion. |
| Verzögerung | Nummer | Wartezeit, bevor die angegebene Funktion aufgerufen wird. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Funktionsausführungsvorgangs. Verwenden Sie diesen Wert in Helpers – helpers.Timing.ClearTimeout(Number timeoutId)Methode, wenn Sie diesen Vorgang abbrechen müssen. |
Dieses Codebeispiel zeigt, wie ein 20-Minuten-Timer festgelegt wird. Sie können diese Funktion einer Schaltfläche zuordnen Erinnern Sie mich in 20 Minuten .
function handler({api, helpers}) {
const timeoutId = helpers.timing.setTimeout(() => {
api.emit('NOW_UXF_PAGE#ADD_NOTIFICATIONS', {
id: 'alert5',
status: 'high',
icon: 'info-circle-outline',
content: 'Try to look away at something that is 20 feet away from you for a total of 20 minutes.',
action: { type: 'dismiss' }
});
}, 20 * 60 * 1000);
// The timeout ID is kept in state to use when calling the helpers.timing.clearTimeout() method at a later point
api.setState('timeoutId', timeoutId);
}
Helpers – helpers.translate(Zeichenfolgennachricht, Zeichenfolgentoken)
Ruft die angegebene Nachricht asynchron basierend auf der Sitzungssprache des aktuellen Anwenders ab und übersetzt sie.
Sie können diese Methode mit verwenden api – setState(Zeichenfolge stateParam, beliebiger Wert)Zum Binden des übersetzten Werts an andere Felder auf der Seite.
Asynchron Und Warten . Die folgenden Codebeispiele zeigen beide Implementierungen.| Name | Typ | Beschreibung |
|---|---|---|
| Nachricht | Zeichenfolge | Zu übersetzende Nachricht. |
| Token | Zeichenfolge | Optional. Kommagetrennte Liste von Parametern, die zum Ersetzen von Zeichenfolgenvariablen verwendet werden sollen. Zum Beispiel: |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Übersetzte Textzeichenfolge. |
Das folgende Beispiel zeigt, wie Tabellenfeldreferenzen übergeben werden, um in die entsprechenden Variablen in einer Zeichenfolge mithilfe einer Zusage einzubetten.
function handler ({api, helpers}) {
helpers.translate('Welcome {0} {1}!', user.firstName, user.lastName)
.then((translatedText) => {
api.setState('greeting', translatedText);
});
}
Das folgende Beispiel zeigt die Verwendung Asynchron Und Warten In Ihrer Funktion anstelle einer Zusage.
async function handler ({api, helpers}) {
const translatedText = await helpers.translate('Welcome to {0}', 'ServiceNow');
api.setState('greeting', translatedText);
}