URL Variablen und öffnen im neuen Fenster
Beschreibung:
Es gibt in Budibase zwei Möglichkeiten Daten in Variablen zu Speichern.
einmal über States oder über URL Variablen.
In einer URL Variable sieht man den Inhalt in der URL.
Also für sensible Daten die States benutzen.
Warum dann URL Variablen???
Weil States in einem neuen Fenster keine Gültigkeit mehr haben.
States sind nur in einem Fennster gültig(Show Modal gillt auch noch) Da im Browserfenster geöffnet wird.
in der regel wird in einer URL Variable nur die ID und ander Paramter die dafür zuständig sind GUI elemente ein und auszublenden.
Sind es sensible GUI elemente die zum Beispiel nur bestimmte Benutzer sehen dürfen.
Würde ich in der Datenbank ein extra Feld anlegen, was dann als condition vom user benutzt werden kann.
Definition von URL Variablen
URL Variablen werden im Namen des Screens angehangen.
eine Variable ist immer /:varname
/screenname/:id
Sollen mehrer Variablen definiert werden:
/screenname/:id/:meinwert
In meinem Beispielbild die Variable id und die Variable view
Auf Variablen zugreifen:
In dem Screen kann mit
{{ URL.id }} und {{ URL.view }}
drauf zugegriffen werden.
Screen öffnen Variablen übergeben:
Übergeben werden die Variablen entweder manuell in einer Link komponente oder über die Aktion Navigate to.
man kann sie natürlich auch manuell an die Adresszeile anfügen. z.b für Debug zwecke. Dann gvibts eine andere Ansicjht oder.
Über Link Komponente:
Eine Linkkomponente erstellen in der Tabelle als Beispiel
Nun in den eigenschftaen des Links einen Namen vergeben und ein Ziel.
Variablen werden einfach mit einem / angegeben
/screenname/wert
sollen mehre variablen übergeben werden einfach mit slash hintereinander.
Auf die Reihenfolge achten, die Variablen werden in der Reihenfolge zugeordnet wie sie beim definieren angelegt wurden.
/screenname/wert1/wert2
In meinem Beispiel
/vertragsdetails/{{ Table.vertraege._id }}/true
Dazu auf den Blitz klciken
und dann dort eingeben.
Es können wieder Variablen übergeben werden wie auch, static text.
Der static text ist hier true.
Die Variable die ID von der row wo der Link drin ist
Über einen Button mit Aktion Navigate To:
Aktion Naviagte to auswählen
Jetzt gibt es zwei Varianten Screen und URL
Screen:
- Dann Screen auswählen
- Screen mit Variablen eintragen, Ist genauso wie beim Link, zumindest wenn man Navigate to und dann Screen wählt.
/vertragsdetails/{{ Table.vertraege._id }}/true
URL:
Mit URL hab ich die Möglichkeit den Screen in einem neuen Fenster / Tab zu öffnen.
Damit aber auch ein Screen geöffnet werden werden kann muss dem eine # vorangestellt werden.
Sonst gibt es einen Zugriffsfehler.
#/vertragsdetails/{{ Table.vertraege._id }}/true
Abrufen der URL Variablen im neuen Screen, als Beispiel mit einem Button der nicht dargestellt werden soll:
Condition festlegen:
Da wir hier view auf true gesetzt haben wird im neuen Fenster der Button save nicht dargestellt.
Da wir in dem Screen, den button unter condition folgenden filter hinzugefügt haben.
Dazu in dem Screen auf den Button klicken der nicht dargestellt werden soll, wenn wie in unserem Beispiel view auf true gestellt ist.
Dort dann auf configure conditions klicken
Und dann folgende condition hinzufügen.
- Hide component, wenn die condition zu triff. Bei show, würde das element nur angezeigt werden, wenn die condition gültig wäre.
- if {{ unsere URL.view }} Variable
- =
- true
ist, wird die komponente versteckt.
Ergebnis auf der Seite:
Wird true übergeben, kein button da
Wird false übergeben
Wozu das ganze?
So kann ich mit einem Screen, mehrer Sachen machen und muss nicht screens doppelt designen ;-)











