本篇文章将为大家介绍 Power Apps 画布应用中的核心概念 - 变量。
什么是变量
Power Apps 中的变量是用来存储数据,我们可以将用户信息,或者用户输入的某些内容,甚至通过计算得到的某些数据存储到变量中。这样可以让我们更好的管理这些数据,同时也能够在其他地方更好的使用这些数据。
变量的类型
在 Power Apps 中,我们可以将变量分为两种。
一种是本地变量,或者叫做上下文变量。
另外一种变量是全局变量。
创建局部变量
那我们进入到 make.pwoerapps.com 中,一起去看一下这两种变量的区别,以及我们要怎么去创建这两种变量。
我先创建了一个空白的画布应用。
然后我们新建一个屏幕,让我们的应用有两个屏幕。
局部变量,或者上下文变量的意思是。这个变量我们设置以后,只能在当前的屏幕进行访问和使用。
不能在其他屏幕里面访问到。
举个例子,我现在已经有了两个屏幕。
然后我在屏幕 2 中插入了两个控件,一个文本输入框,一个文本标签控件。
接下来我想让,文本标签控件显示的内容是文本输入框中我们输入的文字。
这个时候我们就可以去设置一个局部的上下文变量。
通过更改文本输入框的 OnChange 行为属性,我们在公式当中通过 UpdateContext 公式可以去设置一个局部变量。
UpdateContext({varLocalText:TextInput1.Text})
这时候这段公式的意思是,我们每次对文本框进行更改的时候,就把文本框的文字设置为局部变量varLocalText 。
接下来为了让文本标签显示这个内容,我们就将文本标签控件的 Text 属性设置为 varLocalText
此时我们运行应用。
你在文本框中输入的内容,就会体现在 Label 上
但这个时候我如果想要让屏幕1 中也显示 varLocalText 的值,是做不到的。
因为我们当前 varLocalText 是局部变量,只能在他所定义的当前屏幕中使用。
比如我们在屏幕1里面,插入了一个文本标签控件,然后让他的 Text 属性设置为 varLocalText ,就会出现错误。
那我们回到屏幕2,局部变量除了可以存储文本类型的以外,其他整数,日期,包括记录类型的值都可以通过局部变量进行存储。
比如我们如果想要存储一个记录类型的话,要怎么做呢。
我们可以插入一个 button ,然后在 button 中的 OnSelect 属性中,通过 UpdateContext 将当前用户的信息,存储到局部变量 varUserInfo 中。
此时让我们点一下按钮,实际就会把用户信息存储下来。
那我们怎么去看当前应用有哪些变量呢?
我们可以在视图当中看到有一个叫做变量的选项。
这里就可以看到我们当前应用中定义的变量。
这时候我们点击这个 record的图标,就可以看到被存储下来的user info 数据。
使用起来也和正常使用变量一样。
比如我们想要获取用户的名字。
那么可以直接在屏幕2 中插入一个文本标签控件。
然后将 Text 属性设置为 varUsserInfo.FullName 就可以。
清除局部变量
那接下来我们看一下,如何清除局部变量。
比如我们想要在进入到屏幕2 的时候将所有屏幕2 的局部变量清除。
那我们只需要设置屏幕2 的 OnVisible 属性,通过 UpdateContext 公式,将我们的2个局部变量设置为 Blank ,也就是清空。
这时候,我们再进入屏幕的时候,一切就会还原。
将局部变量从一个屏幕传递到另外一个屏幕
图片
那如果这时候我们想要在另外一个屏幕中,也访问当这个屏幕的局部变量,有几种方法呢?
首先我们可以通过 Navigate 公式
比如在屏幕2中添加一个按钮,然后将按钮的 OnSelect 点击行为设置为导航。
通过 Navigate 公式,导航到屏幕1 中,然后第二个参数是屏幕的跳转动画,之后我们还可以定义第三个参数,Context ,通过第三个参数我们可以将当前屏幕的局部变量,传递到 Screen1 中。
这时候我们在 Screen1 中,插入一个文本标签控件,就可以通过 varLocal 来访问到局部变量的用户信息。
这个传递背后在做什么事情呢?
我们可以通过视图当中的变量去看到。此时实际上是在 Screen1 中创建了一个局部变量 varLocal 。
因此这个时候我们就知道了创建局部变量的第二种方法。
通过 Navigate 方法,可以在当前屏幕为指定屏幕去创建局部变量。
全局变量
介绍完局部变量以后,我们再来看下全局变量。
全局变量的设置的值,可以在应用中的所有屏幕中使用。
什么时候会用到这种全局变量呢?
有一种情况是我们每次在打开应用的时候,将整个用户信息存储到全局变量中。
因为这种用户信息可能会在多个屏幕上都使用,因此这种全局变量的方法是最省事的。
要想创建全局变量,我们需要使用 Set 公式。
我们可以在 App 的 OnStart 行为属性中,去使用Set 公式来设置一个全局变量。
这里的 OnStart 会在应用刚开始运行的时候去执行。
我们在开发过程中如果想要执行 OnStart ,需要点击 App 旁边的 … 然后选择 Run OnStart。
这时候我们再新建一个屏幕,这个屏幕就可以直接访问到刚刚设置的全局变量。
同时在变量视图中,我们也会看到多出来一个 Global 全局变量的选项,这里面存储的就是我们应用中设置的全局变量,而局部变量是会显示在不同屏幕的选项中的。
而如果我们此时想要更改全局变量的值,那我们可以在任何地方通过 Set 公式来对全局变量重新赋值,这时候就会直接更改全局变量的值。
想要清除全局变量的值,同样就是给全局变量设置为 Blank() 就可以。
总结
那现在让我们总结一下 Power Apps 画布应用当中的变量内容。
首先变量分为局部变量和全局变量。
他们的区别在于,局部变量只能在当前屏幕中访问,而全局变量可以在应用中的所有屏幕上访问。
局部变量常规是通过 UpdateContext 公式,为当前屏幕设置局部变量的。
另外也可以通过 Navigate 公式,为跳转过去的指定屏幕设置一个局部变量。
而全局变量的设置方法是通过 Set 来进行的。
如果我们想要清除变量里面的值,不管是全局变量还是局部变量,那只需要将变量的值设置为Blank() 就可以。