全局变量

已完成

由于全局变量非常灵活,所以也是最常用的变量。 设置变量后,可在整个应用中对其进行引用或更新。 这样可以避免重复查询相同的信息,可以以命令性方式构建所需信息,有时还可仅用作一个占位符。

为用户存储信息

对应用进行个性化设置是应用中的常见设计模式。 操作起来可以非常简单,比如在应用的每个屏幕上显示欢迎和用户名。 借助 Power Apps,您可在标签控件中使用以下公式,以声明方式显示欢迎消息并获取用户名。

"Welcome " & User().FullName

本公式会显示欢迎字符串,然后会查询 Azure Active Directory 以获得用户的 DisplayName 属性,并以文本形式显示出来。 但是,如果您在每个屏幕上都添加了该函数,则每次屏幕打开 Power Apps 时都必须直接从 Microsoft Entra ID 查询相应数据。 这样会导致重复调用网络,因而降低应用速度。

更好的方法是在应用打开时将该信息存储在全局变量中,然后在整个应用中引用该变量。 您可使用以下公式修改应用的 OnStart 属性来实现这一目的。

Set(varUserDisplayName, User().FullName)

现在,可针对标签控件将公式更改为以下形式。

"Welcome " & varUserDisplayName

上一步中代码和对应消息的屏幕截图。

本公式的输出结果与前面的公式相同,但 Power Apps 可以引用存储在变量中的值,而无需在每个屏幕都返回到 Microsoft Entra ID。

在变量中跟踪状态

在声明性思维中,可以基于数据查询来隐藏或显示控件。 例如,如果您有一个客户订单管理应用,则可在客户有 3 个以上未付发票时显示警告图标。 除了警告之外,如果客户在已有三个以上未付发票的情况下还想提交新订单,您可以要求其获得经理审批。 本项审批工作流将从用户选择“批准”按钮开始。

利用声明性思维,您可按照以下方式设置警告图标的 Visible 属性。

CountRows(Filter(InvoiceEntity, CustomerNumber = ThisCustomersNumber 
And Status = "Outstanding")) > 3

如果为 true,则显示图标,如果为 false,则不显示图标。 然后,您可对“批准”按钮的 Visible 属性重复使用同样的公式。

问题是,这就演变成了您要在两个不同位置进行维护的复杂公式,并且该查询将在应用中处理和在数据源上处理时生成重复的网络流量。

更好的方法是仅运行一次复杂调用,将结果存储在变量中,然后使用该变量来控制每个控件的 Visible 属性。

为此,请配置屏幕的 OnVisible 属性以设置该变量。

Set(varOustandingExceeded, CountRows(Filter(InvoiceEntity, CustomerNumber = 
ThisCustomersNumber And Status = "Outstanding")) > 3)

根据公式的结果,varOutstandingExceeded 变量要么为 true,要么为 false。 现在将图标和按钮控件的 Visible 属性设置为 varOutstandingExceeded

无需其他公式或函数。 这是因为这些控件接受 Visible 属性为 true 或 false,而变量将为 true 或 false。 根据屏幕 OnVisible 属性中的 Set 函数,Power Apps 将变量类型设置为布尔,并根据公式的结果将其值设置为 true 或 false。

如此小幅度的更改既能提高您的应用性能,还能降低其维护难度。 每当重复检索在使用过程中不会更改的信息时,都应该引入变量。