Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Áp dụng cho: Ứng dụng Canvas
Nhận thông tin về ứng dụng hiện đang chạy và kiểm soát hành vi của ứng dụng.
Description
Giống như điều khiển, đối tượng App có các thuộc tính xác định màn hình nào đang hiển thị và nhắc bạn lưu các thay đổi để chúng không bị mất. Mỗi ứng dụng có một đối tượng Ứng dụng.
Viết công thức cho một số thuộc tính của đối tượng App . Ở đầu ngăn Dạng xem cây, chọn đối tượng Ứng dụng như bất kỳ điều khiển hoặc màn hình nào khác. Để xem hoặc sửa một trong các thuộc tính của đối tượng, hãy chọn thuộc tính đó trong danh sách thả xuống ở bên trái thanh công thức.
ActiveScreen property
Thuộc tính ActiveScreen xác định màn hình hiện đang được hiển thị.
Thuộc tính này trả về một đối tượng màn hình. Dùng nó để tham chiếu các thuộc tính của màn hình hiện tại, chẳng hạn như tên với công App.ActiveScreen.Name. Bạn cũng có thể so sánh thuộc tính này với một đối tượng màn hình khác, chẳng hạn như công thức so sánh App.ActiveScreen = Screen2 để kiểm tra xem Screen2 có phải là màn hình hiện tại hay không.
Sử dụng chức năng Quay lại hoặc Dẫn hướng để chuyển đổi màn hình được hiển thị.
BackEnabled property
Thuộc tính BackEnabled thay đổi cách ứng dụng phản hồi với cử chỉ quay lại của thiết bị (trượt nhanh hoặc sử dụng nút quay lại phần cứng trên thiết bị Android hoặc trượt nhanh từ bên trái trên thiết bị chạy iOS) khi chạy trong Power Apps dành cho thiết bị di động. Khi được bật, thao tác quay lại thiết bị sẽ quay lại màn hình được hiển thị gần đây nhất, tương tự như công thức Quay lại. Khi bị tắt, thao tác quay lại thiết bị sẽ đưa người dùng đến danh sách ứng dụng.
ConfirmExit properties
Không ai muốn mất những thay đổi chưa được lưu. Sử dụng thuộc tính ConfirmExit và ConfirmExitMessage để cảnh báo người dùng trước khi đóng ứng dụng của bạn.
Note
- ConfirmExit không hoạt động trong các ứng dụng được nhúng trong, ví dụ: Power BI và SharePoint.
- ConfirmExit không được hỗ trợ trong các trang tùy chỉnh.
- Giờ đây, các thuộc tính này chỉ có thể tham chiếu đến các điều khiển trên màn hình đầu tiên nếu tính năng Xem trước tải bị trì hoãn được bật (mà tính năng này được mặc định cho các ứng dụng mới). Nếu bạn tham chiếu các màn hình khác, Power Apps Studio không hiển thị lỗi nhưng ứng dụng đã phát hành không mở trong Power Apps Mobile hoặc trình duyệt. Chúng tôi đang nỗ lực để dỡ bỏ giới hạn này. Trong thời gian chờ đợi, hãy tắt Tải bị trì hoãn trong Các tính năng sắp>tới của Cài đặt (trong Bản xem trước).
ConfirmExit
ConfirmExit là thuộc tính Boolean, khi đúng, sẽ mở hộp thoại xác nhận trước khi ứng dụng đóng. Theo mặc định, thuộc tính này là false và không có hộp thoại nào xuất hiện.
Khi người dùng có thể có các thay đổi chưa lưu trong ứng dụng, hãy sử dụng thuộc tính này để hiển thị hộp thoại xác nhận trước khi thoát khỏi ứng dụng. Sử dụng công thức kiểm tra các biến và thuộc tính điều khiển (ví dụ: thuộc tính Chưa lưu của điều khiển biểu mẫu Chỉnh sửa).
Hộp thoại xác nhận sẽ xuất hiện trong bất kỳ tình huống nào mà dữ liệu có thể bị mất, chẳng hạn như:
- Chạy hàm Exit .
- Nếu ứng dụng chạy trong trình duyệt:
- Đóng trình duyệt hoặc tab trình duyệt nơi ứng dụng chạy.
- Chọn nút lùi lại của trình duyệt.
- Chạy hàm Launch với LaunchTarget của Self.
- Nếu ứng dụng chạy trong Power Apps Mobile (iOS hoặc Android):
- Trượt nhanh để chuyển sang ứng dụng khác trong Power Apps Mobile.
- Chọn nút quay lại trên thiết bị Android.
- Chạy chức năng Khởi chạy để khởi chạy một ứng dụng bảng tùy biến khác.
Giao diện chính xác của hộp thoại xác nhận có thể khác nhau giữa các thiết bị và phiên bản của Power Apps.
Hộp thoại xác nhận không hiển thị trong Power Apps Studio.
ConfirmExitMessage
Theo mặc định, hộp thoại xác nhận hiển thị một thông báo chung, chẳng hạn như "Bạn có thể có những thay đổi chưa được lưu." trong ngôn ngữ của người dùng.
Sử dụng ConfirmExitMessage để cung cấp một thông điệp tùy chỉnh trong hộp thoại xác nhận. Nếu thuộc tính này là trống, giá trị mặc định được sử dụng. Thư tùy chỉnh được cắt cụt khi cần để khớp với hộp thoại xác nhận, vì vậy hãy giữ thư ở một vài dòng nhất.
Trong trình duyệt, hộp thoại xác nhận có thể hiển thị thông báo chung từ trình duyệt.
Note
Đối tượng App có hai thuộc tính khác và OnMessageBackEnabled, được thử nghiệm. Các thuộc tính này cuối cùng cũng bị loại bỏ khỏi đối tượng ứng dụng. Không sử dụng các thuộc tính này trong môi trường sản xuất của bạn.
Example
Đặt thuộc tính ConfirmExit của đối tượng Ứng dụng cho biểu thức này:
AccountForm.Unsaved Or ContactForm.UnsavedHộp thoại hiển thị nếu người dùng thay đổi dữ liệu ở một trong hai biểu mẫu và sau đó cố gắng đóng ứng dụng mà không lưu những thay đổi đó.e người dùng thay đổi dữ liệu ở một trong hai biểu mẫu và sau đó cố gắng đóng ứng dụng mà không lưu những thay đổi đó.
[!div clas1. Đặt thuộc tính ConfirmExitMessage của Ứng dụng thành công thức này:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )Hộp thoại hiển thị nếu người dùng thay đổi dữ liệu trong biểu mẫu Tài khoản và sau đó cố gắng đóng ứng dụng mà không lưu những thay đổi đó.
Thiết lập chuỗi kết nối cho Thông tin chuyên sâu về Ứng dụng
Để xuất nhật ký ứng dụng do hệ thống tạo ra vào Thông tin chi tiết Ứng dụng, hãy thiết lập chuỗi Kết nối cho ứng dụng bảng tùy biến của bạn.
- Mở ứng dụng của bạn để chỉnh sửa trong Power Apps Studio.
- Chọn đối tượng Ứng dụng trong chế độ xem cây điều hướng bên trái.
- Nhập chuỗi Kết nối vào ngăn thuộc tính.
Nếu dữ liệu không được gửi đến Thông tin chuyên sâu về Ứng dụng, hãy liên hệ với người quản trị Power Platform của bạn và kiểm tra xem Thông tin chuyên sâu về Ứng dụng có bị vô hiệu hóa ở cấp độ đối tượng thuê hay không.
Formulas property
Sử dụng các công thức đã đặt tên, trong thuộc tính Formulas, để xác định một công thức có thể được sử dụng lại trong ứng dụng của bạn.
Trong Power Apps, các công thức xác định giá trị của thuộc tính điều khiển. Ví dụ: để đặt màu nền nhất quán trên một ứng dụng, bạn có thể đặt thuộc tính Fill cho mỗi thuộc tính thành một công thức chung:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Với rất nhiều nơi mà công thức này có thể xuất hiện, việc cập nhật tất cả chúng nếu cần thay đổi trở nên tẻ nhạt và dễ xảy ra lỗi. Thay vào đó, bạn có thể tạo một biến toàn cầu trong OnStart để đặt màu một lần, sau đó sử dụng lại giá trị đó trong toàn bộ ứng dụng:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Mặc dù phương pháp này tốt hơn nhưng nó cũng phụ thuộc vào việc OnStart chạy trước khi giá trị cho BGColor được thiết lập. BGColor cũng có thể bị thao túng ở một góc nào đó của ứng dụng mà người tạo ra không biết, một thay đổi do người khác thực hiện và có thể khó theo dõi.
Các công thức được đặt tên cung cấp một giải pháp thay thế. Giống như chúng ta thường viết control-property = expression, thay vào đó, chúng ta có thể viết name = expression rồi sử dụng lại name trong toàn bộ ứng dụng của chúng tôi để thay thế expression. Định nghĩa của các công thức này được thực hiện trong thuộc tính Formulas:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Những lợi thế của việc sử dụng các công thức được đặt tên bao gồm:
- Giá trị của công thức luôn có sẵn. Không có sự phụ thuộc về thời gian, không có OnStart phải chạy trước khi giá trị được đặt, không có thời gian mà giá trị của công thức không chính xác. Các công thức được đặt tên có thể tham chiếu đến nhau theo bất kỳ thứ tự nào, miễn là chúng không tạo tham chiếu vòng. Chúng có thể được tính song song.
- Giá trị của công thức luôn được cập nhật. Công thức có thể thực hiện một phép tính phụ thuộc vào các thuộc tính điều khiển hoặc bản ghi cơ sở dữ liệu và khi chúng thay đổi, giá trị của công thức sẽ tự động cập nhật. Bạn không cần phải cập nhật giá trị theo cách thủ công như với một biến. Và các công thức chỉ tính toán lại khi cần thiết.
- Định nghĩa của công thức là bất biến. Định nghĩa trong Công thức là nguồn thông tin chính xác duy nhất và không thể thay đổi giá trị ở bất kỳ nơi nào khác trong ứng dụng. Với các biến, có khả năng một số mã bất ngờ thay đổi giá trị, nhưng tình huống khó gỡ lỗi này không thể xảy ra với các công thức được đặt tên.
- Tính toán của công thức có thể được hoãn lại. Vì giá trị của nó không thay đổi nên nó luôn có thể được tính toán khi cần, nghĩa là không cần phải tính toán cho đến khi cần đến. Các giá trị công thức không được sử dụng cho đến khi screen2 của ứng dụng được hiển thị thì không cần tính cho đến khi screen2 hiển thị. Việc hoãn công việc này có thể cải thiện thời gian tải ứng dụng. Các công thức được đặt tên mang tính khai báo và tạo cơ hội cho hệ thống tối ưu hóa cách thức và thời điểm chúng được tính toán.
- Công thức được đặt tên là một khái niệm Excel. Power Fx sử dụng các khái niệm Excel nếu có thể vì rất nhiều người biết rõ về Excel. Công thức được đặt tên tương đương với ô được đặt tên và công thức được đặt tên trong Excel, được quản lý bằng Trình quản lý tên. Chúng tự động tính toán lại giống như các ô trong bảng tính và kiểm soát các thuộc tính.
Các công thức đã đặt tên được xác định lần lượt trong thuộc tính Formulas, mỗi công thức kết thúc bằng dấu chấm phẩy. Kiểu công thức được suy ra từ kiểu các thành phần trong công thức và cách chúng được sử dụng cùng nhau. Ví dụ: các công thức được đặt tên này truy xuất thông tin hữu ích về người dùng hiện tại từ 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' );
Nếu công thức cho UserTitle cần được cập nhật, bạn có thể thực hiện dễ dàng tại một địa điểm này. Nếu UserPhone không cần thiết trong ứng dụng, thì những cuộc gọi đến bảng Người dùng trong Dataverse sẽ không được tạo. Không có hình phạt nào đối với việc bao gồm một định nghĩa công thức không được sử dụng.
Một số hạn chế của công thức được đặt tên:
- Không thể sử dụng chúng cho các chức năng hành vi hoặc gây ra tác dụng phụ trong ứng dụng.
- Chúng không thể tạo tham chiếu vòng. Không được phép có a = b; trong b = a; trong cùng một ứng dụng.
Hàm do người dùng định nghĩa
Power Fx bao gồm danh sách dài các hàm tích hợp, chẳng hạn như If, Text và Set. Hàm do người dùng định nghĩa cho phép bạn viết các hàm của riêng mình, sử dụng tham số và trả về giá trị, giống như các hàm tích hợp sẵn. Bạn có thể coi hàm do người dùng định nghĩa như một phần mở rộng của các công thức được đặt tên, thêm tham số và hỗ trợ các công thức hành vi.
Ví dụ, bạn có thể định nghĩa một công thức có tên trả về các cuốn sách tiểu thuyết từ thư viện:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
Nếu không có tham số, chúng ta sẽ cần phải xác định các công thức có tên riêng cho từng thể loại. Nhưng thay vào đó, hãy tham số hóa công thức được đặt tên của chúng ta:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
Bây giờ chúng ta có thể gọi LibraryGenre( "Fiction" ), LibraryGenre( "Reference" ) hoặc lọc theo các thể loại khác bằng một hàm do người dùng xác định.
Cú pháp là:
Tên hàm( [ Tên tham số1: Kiểu tham số1 [, Tên tham số2: Kiểu tham số2 ... ] ] ) : Kiểu trả về = Công thức;
- FunctionName – Bắt buộc. Tên của hàm do người dùng định nghĩa.
- ParameterNames – Tùy chọn. Tên của tham số hàm.
- ParameterTypes – Tùy chọn. Tên của một kiểu, có thể là tên kiểu dữ liệutích hợp sẵn, tên nguồn dữ liệu hoặc kiểu được xác định bằng hàm Kiểu .
- ReturnType – Bắt buộc. Kiểu giá trị trả về từ hàm.
- Công thức – Bắt buộc. Công thức tính giá trị của hàm dựa trên các tham số.
Mỗi tham số và đầu ra từ hàm do người dùng xác định phải được nhập. Trong ví dụ này, SelectedGenre: Text xác định tham số đầu tiên cho hàm của chúng ta là kiểu Văn bản và SelectedGenre là tên của tham số được sử dụng trong phần thân cho hoạt động Lọc . Xem Kiểu dữ liệu để biết tên kiểu được hỗ trợ. Hàm Type được sử dụng để tạo một kiểu tổng hợp cho thư viện của chúng ta, để chúng ta có thể trả về một bảng sách từ hàm của mình.
Chúng tôi định nghĩa LibraryType là loại bảng số nhiều bản ghi. Nếu chúng ta muốn truyền một cuốn sách duy nhất cho một hàm, chúng ta có thể trích xuất loại bản ghi cho bảng này bằng hàm RecordOf :
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
Việc khớp bản ghi cho các tham số hàm chặt chẽ hơn so với các phần khác của Power Fx. Các trường của giá trị bản ghi phải là tập hợp con thích hợp của định nghĩa kiểu và không thể bao gồm các trường bổ sung. Ví dụ, IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) sẽ dẫn đến lỗi.
Lưu ý, tính năng đệ quy hiện chưa được hỗ trợ bởi các hàm do người dùng định nghĩa.
Hành vi các hàm do người dùng định nghĩa
Các công thức được đặt tên và hầu hết các hàm do người dùng định nghĩa không hỗ trợ các hàm hành vi có tác dụng phụ, chẳng hạn như Đặt hoặc Thông báo. Nói chung, tốt nhất là tránh cập nhật trạng thái nếu có thể, thay vào đó hãy dựa vào các mẫu lập trình chức năng và cho phép tính toán lại các công thức một cách tự động khi cần. Power Fx Nhưng có những trường hợp không thể tránh khỏi. Để đưa logic hành vi vào hàm do người dùng định nghĩa, hãy Đóng gói phần thân trong dấu ngoặc nhọn:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
Bây giờ chúng ta có thể gọi Spend( 12 ) để kiểm tra xem chúng ta có 12 trong mục Tiết kiệm hay không và nếu có, ghi nợ 12 và thêm 12 vào biến Đã chi. Kiểu trả về của hàm này là Void vì nó không trả về giá trị.
Cú pháp của hàm do người dùng định nghĩa là:
Tên hàm( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Công thức 1 [ ; Công thức 2 . .. };
- FunctionName – Bắt buộc. Tên của hàm do người dùng định nghĩa.
- ParameterNames – Tùy chọn. Tên của tham số hàm.
- ParameterTypes – Tùy chọn. Tên của một kiểu, có thể là tên kiểu dữ liệutích hợp sẵn, tên nguồn dữ liệu hoặc kiểu được xác định bằng hàm Kiểu.
- ReturnType – Bắt buộc. Kiểu giá trị trả về từ hàm. Sử dụng Void nếu hàm không trả về giá trị.
- Công thức – Bắt buộc. Công thức tính giá trị của hàm dựa trên các tham số.
Giống như tất cả các công thức, quá trình thực thi không kết thúc khi gặp lỗi. Power Fx Sau khi hàm Error được gọi, hàm If sẽ ngăn chặn các thay đổi đối với Savings và Spent xảy ra. Hàm IfError cũng có thể được sử dụng để ngăn chặn việc thực thi tiếp theo sau khi xảy ra lỗi. Mặc dù trả về Void, công thức vẫn có thể trả về lỗi nếu có vấn đề.
Kiểu do người dùng xác định
Công thức được đặt tên có thể được sử dụng với hàm Type để tạo các kiểu do người dùng xác định. Sử dụng := thay vì = để xác định kiểu do người dùng xác định, ví dụ Book := Type( { Title: Text, Author: Text } ). Xem chức năng Loại để biết thêm thông tin và ví dụ.
OnError property
Sử dụng OnError để thực hiện hành động khi lỗi xảy ra ở bất kỳ đâu trong ứng dụng. Nó cung cấp cơ hội toàn cầu để chặn biểu ngữ lỗi trước khi hiển thị cho người dùng cuối. Nó cũng có thể được sử dụng để ghi lại lỗi bằng hàm Trace hoặc ghi vào cơ sở dữ liệu hoặc dịch vụ web.
Trong ứng dụng Canvas, kết quả của mỗi lần đánh giá công thức sẽ được kiểm tra lỗi. Nếu gặp lỗi, OnError sẽ được đánh giá bằng cùng các biến phạm vi FirstError và AllErrors sẽ được sử dụng nếu toàn bộ công thức được gói trong một hàm IfError .
Nếu OnError trống , biểu ngữ lỗi mặc định sẽ hiển thị FirstError.Thông báo lỗi. Việc xác định công thức OnError sẽ ghi đè hành vi này để trình tạo có thể xử lý báo cáo lỗi khi cần. Bạn có thể yêu cầu hành vi mặc định trong OnError bằng cách thiết đặt lại lỗi với hàm Error. Sử dụng phương pháp duyệt lại nếu bạn muốn lọc ra hoặc xử lý một số lỗi theo cách khác, nhưng để cho người khác đi qua.
OnError không thể thay thế lỗi trong phép tính theo cách mà IfError có thể. Nếu OnError được gọi, lỗi đã xảy ra và đã được xử lý thông qua các phép tính công thức như IfError; OnError chỉ kiểm soát báo cáo lỗi.
Các công thức OnError được đánh giá đồng thời và có thể đánh giá của chúng có thể chồng lấp với việc xử lý các lỗi khác. Ví dụ, nếu bạn đặt biến toàn cục ở trên cùng của OnError và đọc biến đó sau trong cùng một công thức, thì giá trị có thể đã thay đổi. Sử dụng hàm With để tạo một giá trị được đặt tên cục bộ cho công thức.
Mặc dù mỗi lỗi được OnError xử lý riêng lẻ, biểu ngữ lỗi mặc định có thể không xuất hiện cho từng lỗi riêng lẻ. Để tránh hiển thị quá nhiều biểu ngữ lỗi cùng một lúc, biểu ngữ lỗi đó sẽ không hiển thị lại nếu nó đã hiển thị gần đây.
Example
Xem xét điều khiển Nhãn và Thanh trượt được liên kết với nhau thông qua công thức:
Label1.Text = 1/Slider1.Value
Con trượt đặt mặc định ở 50. Nếu con trượt được di chuyển về 0, thì Label1 sẽ không hiển thị giá trị và biểu ngữ báo lỗi sẽ hiển thị:
Hãy xem xét những gì đã xảy ra một cách chi tiết:
- Người dùng đã di chuyển trang trình bày sang trái và thuộc tính Slide1.Value được thay đổi thành 0.
- Nhãn1.Văn bản đã được tự động đánh giá lại. Xảy ra phép chia cho 0, tạo ra lỗi.
- Không có IfError trong công thức này. Lỗi chia cho 0 được trả về bằng cách đánh giá công thức.
- Label1.Text không thể hiển thị bất cứ thông tin gì cho lỗi này, do đó nó hiển thị trạng thái trống .
- OnError được gọi. Vì không có trình xử lý nên biểu ngữ lỗi tiêu chuẩn được hiển thị cùng với thông tin lỗi.
Nếu cần, bạn cũng có thể thay đổi công thức thành Label1.Text = IfError( 1/Slider1.Value, 0 ). Sử dụng IfError có nghĩa là không có biểu ngữ lỗi hoặc lỗi. Bạn không thể thay đổi giá trị của lỗi từ OnError vì lỗi đã xảy ra— OnError chỉ kiểm soát cách báo cáo lỗi.
Nếu bạn thêm bộ xử lý OnError , điều này sẽ không ảnh hưởng đến các bước trước bước 5 nhưng sẽ thay đổi cách báo cáo lỗi:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Với bộ xử lý OnError này, người dùng ứng dụng không thấy bất kỳ lỗi nào. Nhưng lỗi được thêm vào dấu vết màn hình, bao gồm nguồn thông tin lỗi từ FirstError:
Nếu bạn cũng muốn hiển thị biểu ngữ lỗi mặc định cùng với dấu vết, hãy thiết đặt lại lỗi với hàm Error sau cuộc gọi Theo dõi, như thể theo dõi không có ở đó:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
OnStart property
Note
Việc sử dụng thuộc tính OnStart có thể gây ra sự cố hiệu suất khi tải ứng dụng. Chúng tôi đang tạo các lựa chọn thay thế cho hai lý do hàng đầu để sử dụng thuộc tính này —lưu bộ nhớ ẩn dữ liệu và thiết lập các biến toàn cầu. Đã có giải pháp thay thế để xác định màn hình đầu tiên sẽ hiển thị với Dẫn hướng. Tùy thuộc vào ngữ cảnh của bạn, thuộc tính này có thể bị vô hiệu hóa theo mặc định. Nếu bạn không thấy và cần sử dụng tính năng này, hãy kiểm tra Cài đặt nâng cao của ứng dụng để tìm khóa chuyển. Bạn cũng có thể sử dụng thuộc tính OnVisible của màn hình. Theo mặc định, khi quy tắc OnStart không bị chặn được bật, quy tắc này cho phép hàm OnStart chạy cùng lúc với các quy tắc ứng dụng khác. Vì vậy, nếu các biến được tham chiếu trong các quy tắc ứng dụng khác được khởi tạo trong hàm OnStart , chúng có thể chưa được khởi tạo hoàn toàn. Ngoài ra, một màn hình có thể hiển thị và trở nên tương tác trước các hàm Screen.OnVisible hoặc App.OnStart hoàn tất chạy, đặc biệt là nếu chúng mất nhiều thời gian để hoàn tất.
Thuộc tính OnStart chạy khi người dùng khởi động ứng dụng. Thuộc tính này thường được sử dụng để:
- Truy xuất và lưu bộ nhớ ẩn dữ liệu trong bộ sưu tập bằng cách sử dụng hàm Thu thập.
- Thiết lập các biến toàn cục bằng cách sử dụng hàm Set.
Công thức này chạy trước khi màn hình đầu tiên xuất hiện. Không có màn hình nào được tải, vì vậy bạn không thể đặt các biến ngữ cảnh với hàm UpdateContext. Nhưng bạn có thể chuyển các biến ngữ cảnh bằng hàm Navigate .
Sau khi bạn thay đổi thuộc tính OnStart, hãy kiểm tra bằng cách di chuột qua đối tượng Ứng dụng trong ngăn Dạng xem cây, chọn dấu chấm lửng (...), rồi chọn Chạy OnStart. Không giống như khi ứng dụng tải lần đầu tiên, các bộ sưu tập và biến hiện có đã được thiết lập. Để bắt đầu với các bộ sưu tập trống, sử dụng hàm ClearCollect thay vì hàm Collect.
Note
- Việc sử dụng hàm Dẫn hướng trong thuộc tính OnStart đã ngừng hoạt động. Các ứng dụng hiện có vẫn hoạt động. Trong một khoảng thời gian giới hạn, bạn có thể bật tính năng này trong cài đặt ứng dụng (trong Đã ngừng hoạt động). Tuy nhiên, việc sử dụng Điều hướng theo cách này có thể gây chậm trễ khi tải ứng dụng vì ứng dụng buộc hệ thống phải hoàn tất chạy OnStart trước khi hiển thị màn hình đầu tiên. Sử dụng thuộc tính StartScreen thay vào đó để đặt màn hình đầu tiên được hiển thị.
- Công tắc đã ngừng hoạt động đối với các ứng dụng được tạo trước tháng 3 năm 2021, nơi bạn đã thêm Điều hướng vào OnStart từ tháng 3 năm 2021 đến bây giờ. Khi chỉnh sửa các ứng dụng này trong Power Apps Studio, bạn có thể gặp lỗi. Bật công tắc đã nghỉ hưu để xóa lỗi này.
StartScreen property
Thuộc tính StartScreen đặt màn hình hiển thị trước tiên. Tính năng này được đánh giá một lần khi ứng dụng tải và trả về đối tượng màn hình để hiển thị. Theo mặc định, thuộc tính này trống và màn hình đầu tiên trong dạng xem Cây Studio sẽ hiển thị đầu tiên.
StartScreen là một thuộc tính luồng dữ liệu không thể chứa các hàm hành vi. Tất cả các hàm dòng dữ liệu đều sẵn dùng. Sử dụng các hàm và tín hiệu này để quyết định hiển thị màn hình nào trước tiên:
- Hàm Param để đọc các tham số được sử dụng để khởi động ứng dụng.
- Chức năng người dùng để đọc thông tin về người dùng hiện tại.
- LookUp, Filter, CountRows, Max và các hàm khác đọc từ nguồn dữ liệu.
- API gọi thông qua một trình kết nối. Đảm bảo cuộc gọi quay lại nhanh chóng.
- Các tín hiệu như Kết nối, La bàn và Ứng dụng.
Note
Các biến và bộ sưu tập toàn cầu, bao gồm các biến được tạo trong OnStart, không sẵn dùng trong StartScreen. Các công thức được đặt tên có sẵn và thường là giải pháp thay thế tốt hơn cho việc tái sử dụng công thức trên toàn ứng dụng.
Nếu StartScreen trả về lỗi, màn hình đầu tiên trong chế độ xem Cây Studio sẽ hiển thị như thể Chưa đặt StartScreen . Sử dụng hàm IfError để bắt bất kỳ lỗi nào và chuyển hướng đến màn hình lỗi.
Sau khi bạn thay đổi StartScreen trong Studio, hãy kiểm tra bằng cách di chuột qua đối tượng Ứng dụng trong ngăn Dạng xem cây, chọn dấu chấm lửng (...), sau đó chọn Dẫn hướng đến Màn hình Bắt đầu. Màn hình thay đổi như thể ứng dụng vừa tải.
Examples
Screen9
Screen9 hiển thị đầu tiên bất cứ khi nào ứng dụng khởi động.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Kiểm tra xem "chế độ quản trị" Param có được đặt hay không và sử dụng để quyết định xem Màn hình Chính hoặc Màn hình Quản trị có hiển thị trước hay không.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Kiểm tra xem người dự có phải là nhân viên hay không và hướng họ đến đúng màn hình khi khởi động.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Hướng ứng dụng dựa trên lệnh gọi API đến ForestScreen hoặc OceanScreen. Nếu API không thành công, ứng dụng sẽ sử dụng thay ErrorScreen vào đó.
StudioVersion property
Sử dụng thuộc tính StudioVersion để hiển thị hoặc ghi nhật ký phiên bản của Power Apps Studio được sử dụng để phát hành một ứng dụng. Thuộc tính này sẽ hữu ích khi bạn gỡ lỗi và kiểm tra xem ứng dụng của bạn có được tái phát hành với phiên bản gần đây của Power Apps Studio không.
StudioVersion trả về văn bản. Định dạng của văn bản này có thể thay đổi theo thời gian, vì vậy hãy coi nó như một toàn bộ và không trích xuất các phần riêng lẻ.