-Helfer: UI Builder
Die Hilfs- API bietet allgemeine Funktionen, die für Seitenskripts gleich sind, sodass Sie keine Skripts für einfache Funktionen wie das Öffnen und Schließen eines Modals schreiben müssen.
- Wertskripts für Komponenteneigenschaft
- Skripts für die Transparenz von Komponenten
- Ereignisnutzlastskripts
- UX-Client-Skripteinbindungen
helfer – helfer.modal.close(String modalId)
Schließt das angegebene Dialogfeld auf der aktuellen Seite.
| Name | Typ | Beschreibung |
|---|---|---|
| modalId | Zeichenfolge | Modalkomponenten-ID des zu schließenden 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. |
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird gezeigt, 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']")
}
helfer – helfer.modal.open(Zeichenfolge-modalId, Objektoptionen)
Öffnet das angegebene modale Element auf der aktuellen Seite.
Sie können jeweils nur ein modales Element auf einer Seite 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. |
| Optionen.Inhalt | Zeichenfolge | Textinhalt für das Modal. |
| Optionen.InhaltVollständigeBreite | Boolean | Kennzeichnung, die angibt, ob der horizontale Abstand um den Textkörper des Modals entfernt werden soll, um ihn an breiteren Inhalt anzupassen. Gültige Werte:
Standardwert: false |
| Optionen.HeaderLabel | 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 der Bildschirm klein ist. Gültige Werte:
Standard: sm |
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird das Öffnen eines Modals mit einer Komponenten-ID gezeigt, das mit alert-modalendet.
function handler({api, event, imports, helpers}) {
helpers.modal.open("[component-id$='alert_modal']")
}
helfer – helfer.navigieren.setRouteParams(Objektparameter)
Leitet die angegebenen Parameter an andere Komponenten auf derselben Seite weiter.
Verwenden Sie diese Methode in einer beliebigen 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 er sich ändert, damit sie darauf reagieren kann. Verwenden Sie diese Methode beispielsweise, um den ausgewählten Index einer Registerkartenkomponente so zu übergeben, dass er in der URL angezeigt wird, um diese Registerkarte zu fokussieren.
| Name | Typ | Beschreibung |
|---|---|---|
| params | Objekt | Schlüssel-Wert-Paare optionaler Parameter zur Übergabe an andere Komponenten. 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. Andernfalls werden sie ignoriert. Weitere Informationen zu optionalen Parametern finden Sie unter Seite in UI Builder erstellen. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Codebeispiel zeigt, wie die URL params/selected-tab-index/2angehängt wird. Beachten Sie, dass der Parameter in der tatsächlichen URL von „Kamel-Fall“ in „Slangen-Fall“ geändert wird, sodass „selectedTabIndex“ zu „selected-tab-index“wird.
function handler({api, event, helpers, imports}) {
helpers.navigate.setRouteParams({'params': {'selectedTabIndex': 2}});
}
helfer – helfer.navigieren.zu(Zeichenfolgenroute, Objektfelder, Objektparameter, boolesche Umleitung, boolesche passiveNavigation, Zeichenfolgen-targetRoute)
Navigiert basierend auf den angegebenen Routen- und Feldinformationen von einem Bildschirm zum anderen. URL-Änderungen und die entsprechenden Bildschirmlasten werden beachtet.
| 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 spiegelt sich in der URL wider, und die URL wird basierend auf den Spaltenwerten route, fieldsund optionalParams erstellt: /<route> /<field1Value> /{<field2Value> /params/<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 neueste Verlaufseintrag aus dem Browserverlauf entfernt werden soll. Wenn Sie beispielsweise zu den Standorten A, B und dann C navigieren. Wenn redirect beim Navigieren zu Standort C auf „wahr“ festgelegt ist, wird der Verlaufseintrag für B entfernt. Im Browserverlauf werden nur A und C angezeigt.Gültige Werte:
Standardwert: false |
| passiveNavigation | Boolean | Kennzeichnung, die angibt, ob die Hintergrundnavigation durchgeführt werden soll. Die Hintergrundnavigation erfolgt, wenn eine Seite geöffnet wird, aber nicht aktiv ist oder angezeigt wird. Beispielsweise wird eine inaktive Registerkarte für die Seite geöffnet, sie ist jedoch nicht sichtbar, wird jedoch im Hintergrund geladen. Gültige Werte:
Standardwert: false |
| targetRoute | Zeichenfolge oder Objekt | Untergeordnete Navigation zu einem Drilldown, Deep-Link oder einer untergeordneten Registerkarte. Wenn auf currentfestgelegt, fü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 z. B. die Navigationsnutzlast „NAV_ITEM_SELECTED“sein. |
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel wird gezeigt, wie Sie zu einer Seite navigieren, die nur den Parameter route übergibt.
function handler({api, event, imports, helpers}) {
helpers.navigate.to('test');
}
In diesem Beispiel wird gezeigt, 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'});
}
In diesem Beispiel wird gezeigt, 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'});
}
helfer – helfer.bildschirm.updateStatus(Objekt statusObj)
Ermöglicht Seiten, ihre Statusaktualisierungen zu melden, z. B. Titel, Symbol, geänderter Status, Nachricht und Fehleränderungen.
Statusaktualisierungen werden an WorkspaceChrome oder AppShell gemeldet, je nachdem, welche Schicht die äußere Schicht 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});
helfer – helfer.snHttp(Zeichenfolgen-URL, Objektoptionen)
Sendet eine HTTP-Anforderung an die Instanz ServiceNow und gibt ein Prompt 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, die an die Instanz gestellt werden, in einem Batch verarbeitet werden soll. Gültige Werte:
Standardwert: wahr |
| Optionen.Text | Objekt | Optional. Daten, die als Anforderungstext gesendet werden sollen. Gilt nur für die Anforderungsmethoden PUT, POSTund PATCH. Die Elemente im Objekt hängen vom Typ der HTTP-Methode ab. Einzelheiten finden Sie in den Codebeispielen weiter unten.Standard: |
| Optionen.Kopfzeilen | Objekt | Optional. Zusätzliche Header für HTTP-Anforderungen. Zum Beispiel: |
| Optionen.Methode | Zeichenfolge | Optional. HTTP-Methode. Gültige Werte:
Standard: GET |
| Typ | Beschreibung |
|---|---|
| Fehler | Objekt, das jeden von der REST API zurückgegebenen Fehler beschreibt. Datentyp: Objekt |
| Fehler.Daten | Von der HTTP-API zurückgegebene Antwort. Datentyp: Von der REST API definiert |
| Fehlernachricht | 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 Anforderungsheader enthält. Datentyp: Objekt |
| error.options.responseHeaders | Objekt, das eine Liste aller in der Anforderung gesendeten Antwortheader enthält. Datentyp: Objekt |
| Fehler.Status | Zurückgegebener HTTP-Fehlerstatuscode, 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 snHttp() aufgerufen wird, um ein Prompt zurückzugeben.
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 wartenaufgerufen 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
});
}
helfer – helfer.timen.clearInterval(Number timeoutId)
Bricht die Ausführung der Funktion ab, die durch einen vorherigen Aufruf von setInterval() geplant wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| timeoutId | Nummer | Eindeutiger Bezeichner der zu löschenden geplanten Funktion. Dieser Wert wird durch den entsprechenden Aufruf von setInterval() zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie Sie mit „clearInterval()“ einen Zeitvorgang abbrechen, der zuvor mit der Methode„setInterval()“ festgelegt wurde. Diese Funktion kann von einem Anwender 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;
});
}
helfer – helfer.timeout.clearTimeout(Number timeoutId)
Bricht die Ausführung der Funktion ab, die durch einen vorherigen Aufruf von setTimeout() geplant wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| timeoutId | Nummer | Eindeutiger Bezeichner der zu löschenden geplanten Funktion. Dieser Wert wird durch den entsprechenden Aufruf von setTimeout() zurückgegeben. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Codebeispiel zeigt, wie ein Timer mit der angegebenen timeoutIdbeendet wird.
function handler({api, helpers}) {
api.setState('timeoutId', ({currentValue}) => {
if (currentValue > -1) {
helpers.timing.clearTimeout(currentValue);
}
return -1;
});
}
helfer – helfer.timer.setInterval(Funktion 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 zur wiederholten Ausführung. |
| Verzögerung | Nummer | Länge des Zeitintervalls zwischen den einzelnen Funktionsausführungen. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Vorgangs zur Funktionsausführung. Verwenden Sie diesen Wert in der Methode helfer – helfer.timen.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 Anwender 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);
}
helfer – helfer.timen.setTimeout(Funktion fn, Nummernverzögerung)
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 vor dem Aufrufen der angegebenen Funktion. Einheit: Millisekunden |
| Typ | Beschreibung |
|---|---|
| Nummer | Eindeutiger Bezeichner des Vorgangs zur Funktionsausführung. Verwenden Sie diesen Wert in der Methode helfer – helfer.timeout.clearTimeout(Number timeoutId), wenn Sie diesen Vorgang abbrechen müssen. |
Dieses Codebeispiel zeigt, wie ein 20-Minuten-Timer festgelegt wird. Sie können diese Funktion mit einer Schaltfläche Erinnerung in 20 Minutenverknüpfen.
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);
}
helfer – helfer.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 api – setState(Zeichenfolge 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. Zum Beispiel: |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Übersetzte Textzeichenfolge. |
Das folgende Beispiel zeigt, wie Tabellenfeldreferenzen mithilfe eines Prompts übergeben werden, um sie in den 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 in Ihrer -Funktion asynchrone und wartende Elemente anstelle eines Prompts verwenden.
async function handler ({api, helpers}) {
const translatedText = await helpers.translate('Welcome to {0}', 'ServiceNow');
api.setState('greeting', translatedText);
}