Share via


App-objekt i Power Apps

Gjelder: Lerretsapper Modelldrevne apper

Gir informasjon om appen som kjører, og kontroll over appens virkemåte.

Beskrivelse

På samme måte som en kontroll inneholder appen egenskaper som identifiserer hvilket skjermbilde som vises, og som ber brukeren om å lagre endringer, slik at de ikke går tapt. Hver app har et app-objekt.

Du kan skrive formler for noen egenskaper i app-objektet. Øverst i Trevisning-ruten velger du app-objektet, på samme måte som andre kontroller eller skjermer. Vis og rediger et av objektets egenskaper ved å velge det fra rullegardinlisten til venstre for formellinjen.

Appobjektet i ruten Trevisning.

ActiveScreen-egenskapen

ActiveScreen-egenskapen identifiserer skjermen som vises.

Denne egenskapen returnerer et skjermobjekt. Bruk den til å referere til egenskapene for skjermbildet som vises, for eksempel navnet med formelen App.ActiveScreen.Name. Du kan også sammenligne denne egenskapen med et annet skjermobjekt, for eksempel med sammenligningsformelen App.ActiveScreen = Screen2 for å teste om Screen2 er skjermen som vises.

Bruk Back- eller Navigate-funksjonen til å endre skjermen som vises.

Egenskapen BackEnabled

Egenskapen BackEnabled endrer hvordan appen reagerer på enhetens tilbakebevegelse (sveip eller bruk tilbakeknappen for maskinvare på Android-enheter, sveip fra venstre på iOS-enheter) når du kjører i Power Apps-mobilversjonen. Når enheten er aktivert, navigerer tilbakebevegelsen tilbake til skjermen som sist ble vist, som ligner Tilbake-formelen. Når enheten er deaktivert, returnerer tilbakebevegelsen brukeren til applisten.

ConfirmExit-egenskaper

Ingen ønsker å miste ulagrede endringer. Bruk ConfirmExit- og ConfirmExitMessage-egenskapene til å advare brukeren før de avslutter appen.

Obs!

  • ConfirmExit fungerer ikke i apper som er innebygd i, for eksempel Power BI og SharePoint.
  • Nå kan disse egenskapene bare referere til kontroller på første skjerm hvis evalueringsfunksjonen Forsinket innlasting er aktivert (den er standard for nye apper). Hvis det er referanser, viser ikke Power Apps Studio en feilmelding, men den publiserte appen åpnes ikke i Power Apps Mobile eller en nettleser. Vi arbeider aktivt med å fjerne denne begrensningen. I mellomtiden kan du deaktivere forsinket innlesing i Innstillinger>Kommende funksjoner (under Forhåndsversjon).

ConfirmExit

ConfirmExit er en boolsk egenskap som, når sann, åpner en bekreftelsesdialogboks før appen lukkes. Som standard er denne egenskapen usann, og det vises ingen dialogboks.

I situasjoner der brukeren kan ha endringer i appen som ikke er lagret, bruker du denne egenskapen til å vise en dialogboks for bekreftelse før du avslutter appen. Bruk en formel som kan kontrollere variabler og kontrollegenskaper (for eksempel egenskapen Unsaved for Edit form-kontrollen).

Bekreftelsesdialogboksen vises i alle situasjoner der data kan gå tapt, som i disse eksemplene:

  • Kjøre Exit-funksjonen.
  • Hvis appen kjører i en nettleser:
    • Lukk leseren eller nettleserfanen der appen kjøres.
    • Velg tilbakeknappen i nettleseren.
    • Kjøre Launch-funksjonen der LaunchTarget er Selv.
  • Hvis appen kjører på Power Apps Mobile (iOS eller Android):
    • Sveip for å bytte til en annen app på Power Apps Mobile.
    • Velg tilbake-knappen på en Android-enhet.
    • Kjøre Launch-funksjonen for å starte en annen lerretsapp.

Det nøyaktige utseendet på bekreftelsesdialogboksen kan variere på tvers av enheter og versjoner av Power Apps.

Bekreftelsesdialogboksen vises ikke i Power Apps Studio.

ConfirmExitMessage

Bekreftelsesdialogboksen viser som standard en generisk melding, for eksempel Du har kanskje ulagrede endringer." på brukerens språk.

Bruk ConfirmExitMessage til å lage en egendefinert melding i bekreftelsesdialogboksen. Hvis denne egenskapen er tom, brukes standardverdien. Egendefinerte meldinger blir avkortet etter behov for å passe i bekreftelsesdialogboksen, så hold meldingen til noen få linjer maksimum.

I en webleser kan bekreftelsesdialogboksen vises med en generisk melding fra webleseren.

Obs!

Appobjektet har ytterligere to egenskaper, OnMessage og BackEnabled, som er eksperimentelle. Disse egenskapene blir fjernet fra appobjektet etter hvert. Vi anbefaler at du ikke bruker disse egenskapene i produksjonsmiljøet.

Eksempel

  1. Opprett en app som inneholder to skjemakontroller AccountForm og ContactForm.

  2. Sett App-objektets ConfirmExit-egenskap til dette uttrykket:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Denne dialogboksen vises hvis brukeren endrer data i et av skjemaene og deretter prøver å lukke appen uten å lagre endringene.

    Generell bekreftelsesdialogboks.

  3. Sett App-objektets ConfirmExitMessage-egenskap til denne formelen:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    Denne dialogboksen vises hvis brukeren endrer data i skjemaet for forretningsforbindelse og deretter prøver å lukke appen uten å lagre endringene.

    Skjemaspesifikk bekreftelsesdialogboks.

Konfigurer instrumenteringsnøkkel for Application Insights

Hvis du vil eksportere systemgenererte applogger til Application Insights, må du konfigurere instrumenteringsnøkkelen for lerretsappen.

  1. Åpne appen for redigering i Power Apps Stuido.
  2. Velg App-objektet fra trevisningen i venstre navigasjon.
  3. Angi instrumenteringsnøkkelen i egenskapsruten.

Hvis data ikke sendes til App Insights, må du kontakte Power Platform-administratoren og verifisere om App Insights er deaktivert på leiernivå.

Formler-egenskapen

Bruk navngitte formler i egenskapen Formler til å definere en formel som kan brukes på nytt i hele appen.

I Power Apps styres kontrollegenskapene av formler. Hvis du for eksempel vil angi bakgrunnsfargen konsekvent i en app, kan du angi egenskapen Fyll for hver av dem til en felles formel:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

Med så mange steder der denne formelen kan forekomme, blir den langtekkelig og utsatt for feil, slik at alle oppdateres hvis det er nødvendig med en endring. I stedet kan du opprette en global variabel i OnStart for å angi fargen én gang, og deretter bruke verdien på nytt i hele appen:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Selv om denne metoden er bedre, avhenger den også av at OnStart kjører før verdien for BGColor etableres. BGColor kan også manipuleres i en del av appen som oppretteren ikke er klar over, en endring som er gjort av andre, og som kan være vanskelig å spore.

Navngitte formler er et alternativ. Akkurat som vi vanligvis skriver control-property = expression kan vi i stedet skrive name = expression og deretter gjenbruke name i hele appen for å erstatte expression. Definisjonene av disse formlene utføres i egenskapen Formler:

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Fordelene ved å bruke navngitte formler er følgende:

  • Formelens verdi er alltid tilgjengelig. Det finnes ingen tidsberegningsavhengighet, ingen OnStart som må kjøre før verdien angis, og ikke noe tidspunkt da formelens verdi er feil. Navngitte formler kan referere til hverandre i en hvilken som helst rekkefølge så lenge de ikke oppretter en sirkelreferanse. De kan beregnes parallelt.
  • Formelens verdi er alltid oppdatert. Formelen kan utføre en beregning som er avhengig av kontrollegenskapene eller databaseoppføringene, og etter hvert som de endres, oppdateres formelens verdi automatisk. Du trenger ikke oppdatere verdien manuelt slik du gjør med en variabel. Og formler beregnes bare på nytt ved behov.
  • Definisjonen av formelen er uforanderlig. Definisjonen i Formler er den eneste sannhetskilden, og verdien kan ikke endres et annet sted i appen. Med variabler er det mulig at en del kode uventet endrer en verdi, men dette er ikke mulig med navngitte formler.
  • Beregningen av formelen kan utsettes. Siden verdien er uforanderlig, kan den alltid beregnes ved behov, noe som betyr at den ikke må beregnes før det er nødvendig. Formelverdier som ikke brukes før screen2 i en app vises, behøver ikke beregnes før screen2 vises. Appen kan lastes inn raskere hvis du utsetter dette arbeidet. Navngitte formler er deklarative og gir systemet muligheter for å optimalisere hvordan og når de beregnes.
  • Navngitte formler er et Excel-konsept. Power Fx bruker Excel-konsepter der det er mulig, siden mange folk kjenner Excel godt. Navngitte formler tilsvarer navngitte celler og navngitte formler i Excel, administrert med Navnebehandling. De beregnes automatisk som et regneark, akkurat som kontrollegenskapene.

Navngitte formler defineres i rekkefølge i egenskapen Formler, og hver formel slutter med et semikolon. Formeltypen utledes fra uttrykkstypene, som er basert på typene elementer i uttrykket og hvordan de brukes sammen. Disse navngitte formlene henter for eksempel nyttig informasjon om gjeldende bruker fra Dataverse:

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Hvis formelen for UserTitle må oppdateres, kan du enkelt gjøre det på denne plasseringen. Hvis UserPhone ikke er nødvendig i appen, blir ikke disse kallene til Brukere-tabellen i Dataverse utført. Det er ingen ulemper ved å inkludere en formeldefinisjon som ikke brukes.

Noen begrensninger for navngitte formler:

  • De kan ikke bruke atferdsfunksjoner eller på andre måter forårsake sideeffekter i appen.
  • De kan ikke opprette en sirkelreferanse. Det er ikke tillatt å ha a = b; og b = a; i samme app.

OnError-egenskapen

Bruk OnError til å reagere etter at en feil er oppdaget. Den gir en global mulighet til å stanse et feilbanner før det vises for sluttbrukeren. Den kan også brukes til å logge en feil med Trace-funksjonen eller skrive til en database eller nettjeneste.

Resultatet av hver formelevaluering blir kontrollert for feil. Hvis dette er en feil, evalueres OnError med de samme FirstError- og AllErrors-omfangsvariablene som hadde funnes hvis hele formelen hadde vært pakket i en IfError-funksjon.

Hvis OnError er tom, vises et standard feilbanner med FirstError.Message for feilen. Hvis du definerer en OnError-formel, overstyres denne funksjonaliteten, slik at utvikleren kan håndtere feilrapporteringen etter eget ønske. Standardfunksjonaliteten kan forespørres i OnError ved å generere feilen på nytt med Error-funksjonen. Dette er nyttig hvis enkelte feil skal filtreres ut eller håndteres på en annen måte, mens andre skal sendes gjennom.

OnError kan ikke erstatte en feil i beregninger slik IfError kan. Når OnError aktiveres, har feilen allerede oppstått, og den er allerede behandlet via formelberegninger. *OnError* styrer bare feilrapportering.

OnError-formler evalueres samtidig, og det er mulig at evalueringen kan overlappe med behandlingen av andre feil. Hvis du for eksempel angir en global variabel oppå en OnError og leser den senere i samme formel, kan verdien ha endret seg. Bruk With-funksjonen til å opprette en navngitt verdi som er lokal for formelen.

Selv om hver feil behandles enkeltvis av OnError, kan det hende at standard feilbanner ikke vises for hver feil individuelt. For å unngå at det vises for mange feilbannere samtidig, utløser ikke den samme feilen et nytt feilbanner hvis det nylig har blitt vist.

Eksempel

La oss si at vi har en Label-kontroll og Slider-kontroll som er bundet sammen via følgende formel:

Label1.Text = 1/Slider1.Value

Label- og slider-kontroll bundet via formelen Label1.Text = 1/Slider1.Value.

Standardverdien for glidebryteren er 50. Hvis glidebryteren flyttes til 0, vises ingen verdi for Label1, og det vises et feilbanner:

Slider-kontrollen ble flyttet til 0, som fører til deling på null og et feilbanner.

La oss se nærmere på det som skjedde:

  1. Brukeren flyttet glidebryteren til venstre, og egenskapen Slide1.Value ble endret til 0.
  2. Label1.Text ble automatisk evaluert på nytt. Det oppstod en deling på null, som genererte en feil.
  3. Det finnes ingen IfError i denne formelen. Feilen med deling på null returneres av formelevalueringen.
  4. Label1.Text kan ikke vise noe for denne feilen, så den viser tom tilstand.
  5. OnError aktiveres. Siden det ikke finnes noen behandler, vises standard feilbanner med feilinformasjon.

Vi kan om nødvendig også endre formelen til Label1.Text = IfError( 1/Slider1.Value, 0 ). Dette hadde ikke gitt noen feil eller feilbanner. Vi kan ikke endre verdien for en feil fra OnError siden feilen allerede har oppstått på dette punktet. Det er bare et spørsmål om hvordan den skal rapporteres.

Hvis vi legger til en OnError-behandler, har den ingen innvirkning før trinn 5, men den kan virke inn på hvordan feilen rapporteres:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

App.OnError-formelen angitt for å generere en sporing.

Når dette er på plass, forekommer det ingen feil fra appbrukerens perspektiv. Feilen blir imidlertid lagt til i overvåkingens sporing og omfatter kilden til feilinformasjonen fra FirstError:

Slider-kontrollen ble flyttet til 0, som fører til deling på null, men ikke et feilbanner.

Hvis vi også ville at samme standard feilbanner skulle vises i tillegg til sporingen, kunne vi ha generert feilen på nytt med Error-funksjonen etter Trace-oppkallet, slik det hadde gjort hvis Trace ikke hadde vært der:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

OnStart-egenskapen

Obs!

Bruk av OnStart-egenskapen kan føre til ytelsesproblemer under lasting av en app. Vi er i ferd med å opprette alternativer for de to viktigste årsakene til bruk av egenskap – bufringsdata og oppsett av globale variabler. Vi har allerede opprettet et alternativ for å definere det første skjermbildet som skal vises med Navigate. Avhengig av konteksten kan det hende at denne egenskapen er deaktivert som standard. Hvis du ikke ser den, og du må bruke den, kan du se i appens Avanserte innstillinger for å få en bryter til å aktivere den. OnVisible-egenskapen for en skjerm kan også brukes.

OnStart-egenskapen kjører når brukeren starter appen. Denne egenskapen brukes ofte til å utføre følgende oppgaver:

  • Hent og bufre data i samlinger ved hjelp av Collect-funksjonen.
  • Konfigurere globale variabler ved hjelp av Set-funksjonen.

Denne formelen evalueres før den første skjermen vises. Ingen skjerm lastes inn, så du kan ikke angi kontekstvariabler med UpdateContext-funksjonen. Du kan imidlertid overføre kontekstvariabler ved hjelp av Navigate-funksjonen.

Når du har endret OnStart-egenskapen, tester du den ved å holde markøren over App-objektet i Trevisning-ruten, velge ellipse (...) og deretter velge Kjør OnStart. I motsetning til når appen lastes inn for første gang, blir eksisterende samlinger og variabler allerede angitt. Hvis du vil starte med tomme samlinger, bruker du ClearCollect-funksjonen i stedet for Collect-funksjonen.

Hurtigmeny for appelement for Kjør OnStart

Obs!

  • Bruk av Navigate-funksjonen i OnStart-egenskapen er fjernet. Eksisterende apper vil fortsette å fungere. I en begrenset periode kan du fremdeles aktivere den i appinnstillingene (tilgjengelig under Avviklet). Bruk av Naviger på denne måten kan imidlertid føre til forsinkelser i appbelastningen fordi systemet må fullføre evalueringen av OnStart før det første skjermbildet vises. Bruk egenskapen StartScreen i stedet til å beregne det første skjermbildet som vises.
  • Avviklet-bryteren deaktiveres for apper som er opprettet før mars 2021, der du la til Naviger til OnStart mellom mars 2021 og nå. Når du redigerer slike apper i Power Apps Studio, kan det hende det vises en feil. Aktiver ovenfor nevnte Avviklet-bryter for å fjerne denne feilen.

StartScreen-egenskap

Obs!

Egenskapen StartScreen vises ikke i listen over egenskaper når det tilbaketrukne alternativet Forbedret formellinje er aktivert. Hvis du vil deaktivere Forbedret formellinje, går du til Innstillinger>Kommende funksjoner>Avviklet> og slår av bryteren Forbedret formellinje når du vil bruke egenskapen StartScreen.

Egenskapen StartScreen avgjør hvilken skjerm som skal vises først. Den evalueres én gang når appen lastes inn, og returnerer skjermbildet som skal vises. Som standard er denne egenskapen tom, og det første skjermbildet i studiotrevisningen vises først.

StartScreen er en dataflytegenskap som ikke kan inneholde funksjonalitetsfunksjoner. Alle dataflytfunksjoner er tilgjengelige, og bruk spesielt disse funksjonene og signalene til å avgjøre hvilken skjerm som skal vises først:

  • Param-funksjon for å lese parametere som brukes til å starte appen.
  • User-funksjonen for å lese informasjon om gjeldende bruker.
  • LookUp, Filter, CountRows, Max og andre funksjoner som leser fra en datakilde.
  • Alle API-kall via en kontakt, men vær forsiktig slik at det returneres raskt.
  • Signaler som Connection, Compass og App.

Obs!

Globale variabler og samlinger, inkludert de som er opprettet i OnStart, er ikke tilgjengelige i StartScreen. Det finnes erklærende alternativer for å gjøre dette som er på vei. Hvis du vil ha tilbakemeldinger om denne begrensningen, kan du gå til Power Apps-fellesskapsforumet.

Hvis StartScreen returnerer en feil, vil det første skjermbildet i studiotrevisningen vises som om StartScreen ikke hadde blitt angitt. Bruk IfError-funksjonen til å fange opp eventuelle feil og omdirigere til et passende feilskjermbilde.

Når du har endret StartScreen i Studio, tester du den ved å holde markøren over App-objektet i Trevisning-ruten, velge ellipse (...) og deretter velge Naviger til StartScreen. Skjermen endres som om appen er lastet inn.

Naviger til StartScreen

Eksempler

Screen9

Angir at Screen9 skal vises først når appen starter.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Kontrollerer om parameteren for "administrasjonsmodus" er angitt av brukeren, og bruker den til å bestemme om HomeScreen eller AdminScreen skal vises først.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Kontrollerer om en deltaker på en konferanse er med i en gruppe, og henviser vedkommende til skjermen ved oppstart.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Henviser appen basert på et API-kall til ForestScreen eller OceanScreen. Hvis API-en av en eller annen grunn mislykkes, brukes ErrorScreen i stedet.

Egenskapen StudioVersion

Bruk egenskapen StudioVersion til å vise eller logge versjonen av Power Apps Studio som ble brukt til å publisere en app. Dette kan være nyttig ved feilsøking og for å sikre at appen er publisert på nytt med en nylig versjon av Power Apps Studio.

StudioVersion returneres som tekst. Formatet på teksten kan endres over tid og bør behandles som en helhet. Unngå å trekke ut individuelle deler.