helpers – UI Builder
Die Hilfs -API bietet allgemeine Funktionen, die in Seitenskripts gleich sind, sodass keine Skripts für einfache Funktionen wie das Öffnen und Schließen eines modalen Elements geschrieben werden müssen.
- Skripts für Komponenteneigenschaftswert
- Skripts für Komponentensichtbarkeit
- Event-Nutzlastskripts
- UX-Client-Skripteinbindungen
helpers – helpers.modal.close(String modalId)
Schließt das angegebene Dialogfeld auf der aktuellen Seite.
| Name | Typ | Beschreibung |
|---|---|---|
| modalId | Zeichenfolge | Modale Komponenten-ID des zu schließenden modalen Elements. Komponenten-IDs werden automatisch generiert, wenn eine Komponente per Drag-and-Drop in die Phase UI Builder verschoben wird. Sie finden die ID auf der Eigenschaftenseite. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie ein modales Element mit einer Komponenten-ID geschlossen wird, die mit alert-modalendet.
function handler({api, event, imports, helpers}) {
helpers.modal.close("[component-id$='alert_modal']")
}
helpers – helpers.modal.open(String modalId, Object options)
Öffnet das angegebene Dialogfeld auf der aktuellen Seite.
Sie können auf einer Seite jeweils nur ein modales Element anzeigen. Wenn derzeit ein Modal geöffnet ist und Sie diese Methode aufrufen, wird das vorhandene Modal ausgeblendet und das neue Modal angezeigt.
| Name | Typ | Beschreibung |
|---|---|---|
| modalId | Zeichenfolge | Komponenten-ID des zu öffnenden Modals. Komponenten-IDs werden automatisch generiert, wenn eine Komponente per Drag-and-Drop in die Phase UI Builder verschoben wird. Sie finden die ID auf der Eigenschaftenseite. |
| Optionen | Objekt | Optional. |
| options.content | Zeichenfolge | Textinhalt für das Modal. |
| options.contentFullWidth | Boolean | Kennzeichnung, die angibt, ob die horizontale Auffüllung um den Textkörper des modalen Elements entfernt werden soll, um breiteren Inhalt anzupassen. Gültige Werte:
Standardwert: false |
| Optionen.headerLabel | Zeichenfolge | Textinhalt für den modalen Header. |
| options.size | 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 Modals mit der Komponenten-ID ca, das mit alert-modalendet.
function handler({api, event, imports, helpers}) {
helpers.modal.open("[component-id$='alert_modal']")
}
helpers – helpers.navigate.setRouteParams(Object params)
Ü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. Sie können einen Parameter zu einer URL hinzufügen, wenn eine andere Komponente den aktuellen Wert dieses Parameters kennen muss, wenn er sich ändert, damit sie darauf reagieren kann. Verwenden Sie diese Methode beispielsweise, um den selectedIndex einer Registerkartenkomponente so zu übergeben, dass er in der URL angezeigt wird, um den Fokus auf diese Registerkarte zu legen.
| 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 Seiten in UI Builder erstellen. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Code-Beispiel zeigt, wie die URL params/selected-tab-index/2 angehängt wird. Beachten Sie, dass der Parameter in der tatsächlichen URL von Camel-Case in Schlangen-Case geändert wurde, sodass selectedTabIndex zu selected-tab-indexwird.
function handler({api, event, helpers, imports}) {
helpers.navigate.setRouteParams({'params': {'selectedTabIndex': 2}});
}
helpers – helpers.navigate.to(String route, Object fields, Object params, Boolean weitergeleitet, Boolean passiveNavigation, String targetRoute)
Navigiert basierend auf der angegebenen Route und den Feldinformationen von einem Bildschirm zu einem anderen. URL-Änderungen und die entsprechenden Bildschirmlasten werden beachtet.
| Name | Typ | Beschreibung |
|---|---|---|
| Weiterleitung | Zeichenfolge | Name der Route. Muss ein gültiger Eintrag aus UX-App-Routen (sys_ux_app_route.list) sein. Dieser Wert spiegelt sich in der URL wider, und die URL wird basierend auf den Spaltenwerten route, fieldsund optionalParams erstellt: /<route> /<field1Value> /{<field2Value> /Parameter/<optionalParamKey1> /<optionalParamValue1> /<optionalParamKey2> /<optionalParamValue2> Beispiel: |
| Felder | Objekt | Optional. Schlüssel-Wert-Paare der erforderlichen Parameter. Beispiel: 'fields' : {'table': 'incident', 'sysId': '12345'}. |
| params | Objekt | Optional. Schlüssel-Wert-Paare optionaler Parameter. Beispiel: 'params' : {'selectedTabIndex': 4}. |
| umleiten | Boolean | Kennzeichnung, die angibt, ob der aktuelle Verlaufseintrag aus dem Browserverlauf entfernt werden soll. Beispiel: Wenn Sie zu den Sites A, B und dann C navigieren. Wenn redirect beim Navigieren zu C auf „ true “ festgelegt wird, wird der Verlaufseintrag für B entfernt. Der Browserverlauf zeigt nur A und C an.Gültige Werte:
Standardwert: false |
| passiveNavigation | Boolean | Kennzeichnung, die angibt, ob die Hintergrundnavigation ausgeführt werden soll. Die Hintergrundnavigation liegt vor, wenn eine Seite geöffnet wird, aber nicht aktiv ist oder angezeigt wird. Beispiel: Öffnen einer inaktiven Registerkarte für die Seite, die jedoch nicht sichtbar ist, sondern im Hintergrund geladen wird. Gültige Werte:
Standardwert: false |
| targetRoute | Zeichenfolge oder Objekt | Untergeordnete Navigation zu einem Drilldown, Deep-Link oder einer Unterregisterkarte. Bei Festlegung auf currentführt die aktuelle Route eine Unternavigation unter der aktuellen URL durch. Beispiel: Wenn
Die folgende URL wird generiert: Hinweis: targetRoute kann entweder eine Zeichenfolge wie „current“ oder ein Objekt wie „ navigation NAV_ITEM_SELECTED payload“ sein. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, indem Sie nur den Parameter route übergeben.
function handler({api, event, imports, helpers}) {
helpers.navigate.to('test');
}
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, indem Sie die Parameter route und fields übergeben.
function handler({api, event, imports, helpers}) {
helpers.navigate.to('test', {'key': 'value'});
}
Dieses Beispiel zeigt, wie Sie zu einer Seite navigieren, indem Sie die Parameter route, fieldsund params übergeben.
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, geänderter Status, Meldung und Fehleränderungen.
Statusaktualisierungen werden an WorkspaceChrome oder AppShell gemeldet, je nachdem, welche 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(String url, Object options)
Sendet eine HTTP-Anforderung an die Instanz ServiceNow und gibt eine Zusage mit den Ergebnissen zurück.
{
options: {},
otherFields: {}
}
becomes
{
otherFields: {}
}| Name | Typ | Beschreibung |
|---|---|---|
| URL | Zeichenfolge | HTTP-Endpunkt relativ zur Instanz-URL. Zum Beispiel /api/now/table/incident oder /api/now/table/incident/a83820b58f723300e7e16c7827bdeed. |
| Optionen | Objekt | Beschreibt den Inhalt der HTTP-Anforderung. |
| options.batch | Boolean | Optional. Kennzeichnung, die angibt, ob diese HTTP-Anforderung in einem Batch mit anderen HTTP-Anforderungen an die Instanz zusammengefasst werden soll. Gültige Werte:
Standardwert: true |
| options.text | Objekt | Optional. Daten, die als Anforderungstext gesendet werden sollen. Gilt nur für die Anforderungsmethoden PUT, POSTund PATCH. Elemente im Objekt hängen vom Typ der HTTP-Methode ab. Weitere Informationen finden Sie in den folgenden Codebeispielen.Standard: |
| options.headers | Objekt | Optional. Zusätzliche HTTP-Anforderungskopfzeilen. Beispiel: |
| options.method | Zeichenfolge | Optional. HTTP-Methode. Gültige Werte:
Standard: GET |
| Typ | Beschreibung |
|---|---|
| Fehler | Objekt, das alle von der REST-API zurückgegebenen Fehler beschreibt. Datentyp: Objekt |
| Fehler.Daten | Antwort, die von der HTTP-API zurückgegeben wird. Datentyp: Definiert durch REST API |
| Fehler.Nachricht | Meldung, die den Fehler beschreibt, der beim Versuch, die HTTP-Anforderung zu verarbeiten, aufgetreten ist. 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 Anforderungskopfzeilen enthält. Datentyp: Objekt |
| Fehler.Optionen.AntwortHeader | Objekt, das eine Liste aller in der Anforderung gesendeten Antwortkopfzeilen enthält. Datentyp: Objekt |
| Fehler.Status | Zurückgegebener HTTP-Fehlerstatuscode, z. B. 400, 405 oder 500. Datentyp: Zahl |
| Fehler.StatusText | Zurückgegebene HTTP-Statusmeldung, 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 snHttp() aufgerufen wird, 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 snHttp() mit „ async “ und „ await“ aufgerufen wird.
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.timeing.clearInterval(Number timeoutId)
Bricht die Ausführung der Funktion ab, die durch einen vorherigen setInterval()- Aufruf geplant wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| Zeitüberschreitungs-ID | Nummer | Eindeutiger Bezeichner der zu löschenden geplanten Funktion. Dieser Wert wird vom entsprechenden setInterval()- Aufruf zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt die Verwendung von clearInterval(), um einen Zeitvorgang abzubrechen, der zuvor mit dersetInterval()- Methode festgelegt wurde. Diese Funktion kann von einem Benutzer aufgerufen werden, der auf einer Seite auf die Schaltfläche Automatische Aktualisierung deaktivieren klickt.
function handler({api, helpers}) {
api.setState('intervalId', ({currentValue}) => {
if (currentValue > -1) {
helpers.timing.clearInterval(currentValue);
}
return -1;
});
}
helpers – helpers.timeout.clearTimeout(Number timeoutId)
Bricht die Ausführung der Funktion ab, die durch einen vorherigen setTimeout()- Aufruf geplant wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| Zeitüberschreitungs-ID | Nummer | Eindeutiger Bezeichner der zu löschenden geplanten Funktion. Dieser Wert wird vom entsprechenden setTimeout()- Aufruf zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Codebeispiel zeigt, wie ein Timer mit der angegebenen timeoutId beendet wird.
function handler({api, helpers}) {
api.setState('timeoutId', ({currentValue}) => {
if (currentValue > -1) {
helpers.timing.clearTimeout(currentValue);
}
return -1;
});
}
helpers – helpers.timer.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 zur nativen JavaScript-Methode setInterval() unterstützt diese Methode nicht die Übergabe einer Codezeichenfolge, die als erstes Argument ausgewertet werden soll. 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 jeder Funktionsausführung. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Funktionsausführungsvorgangs. Verwenden Sie diesen Wert in der Methode helpers – helpers.timeing.clearInterval(Number timeoutId), wenn Sie diesen Vorgang abbrechen müssen. |
Dieses Codebeispiel zeigt, wie der Zeitstempel auf einer Seite jede Sekunde aktualisiert wird. Diese Funktion kann von einem Benutzer aufgerufen werden, der auf einer Seite auf die Schaltfläche Automatische Aktualisierung aktivieren klickt.
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);
}
helpers – helpers.timeout.setTimeout(Function fn, Number Delay)
Führt die angegebene Funktion nach der angegebenen Verzögerung aus.
Im Gegensatz zur nativen JavaScript-Methode setTimeout() unterstützt diese Methode nicht die Übergabe einer Codezeichenfolge, die als erstes Argument ausgewertet werden soll. Alle zusätzlichen Argumente werden an die Funktion selbst übergeben.
| Name | Typ | Beschreibung |
|---|---|---|
| fn | Funktion | Auszuführende Funktion. |
| Verzögerung | Nummer | Dauer der Wartezeit, bevor die angegebene Funktion aufgerufen wird. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Funktionsausführungsvorgangs. Verwenden Sie diesen Wert in der Methode helpers – helpers.timeout.clearTimeout(Number timeoutId), wenn Sie diesen Vorgang abbrechen müssen. |
Dieses Code-Beispiel zeigt, wie ein 20-Minuten-Timer eingestellt wird. Sie können diese Funktion einer Schaltfläche In 20 Minuten erinnern zuordnen.
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(String message, String tokens)
Ruft die angegebene Nachricht asynchron ab und übersetzt sie basierend auf der Sitzungssprache des aktuellen Anwenders.
Sie können diese Methode mit api – setState(String stateParam, Beliebiger Wert) verwenden, um den übersetzten Wert an andere Felder auf der Seite zu binden.
asynchron aufrufen 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. Beispiel: |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Übersetzte Textzeichenfolge. |
Das folgende Beispiel zeigt, wie Tabellenfeldreferenzen übergeben werden, um sie mithilfe einer Zusage in die entsprechenden Variablen in einer Zeichenfolge einzubetten.
function handler ({api, helpers}) {
helpers.translate('Welcome {0} {1}!', user.firstName, user.lastName)
.then((translatedText) => {
api.setState('greeting', translatedText);
});
}
Das folgende Beispiel zeigt, wie Sie „async“ und „ await “ in Ihrer Funktion anstelle einer Zusage verwenden.
async function handler ({api, helpers}) {
const translatedText = await helpers.translate('Welcome to {0}', 'ServiceNow');
api.setState('greeting', translatedText);
}