动态创建 object/variable 并设置其值

Dynamically create object/variable and set its value

enter code here是否可以动态生成变量或对象? 我将一些设置(如标准颜色)存储在共享点列表 (PowerAppStyling) 中,并阅读它以动态设置我所有应用程序的样式。

喜欢:

Object,Property,Value
Label,Font,Segoe UI
Label,Fill,White
Label,Color,Grey

这工作正常,我可以这样设置标签字体:

First(Filter(PowerAppStyling,Object = "Label" && Property = "Font")).Value

现在,为了使它更易于阅读,从上面的列表中,我想动态地在运行时创建一个如下所示的对象: PowerAppStyling.Label.Font 应该给出 "Segoe UI" 的值或我连接列的简单变量,例如 LabelFont.

我尝试了 Set() 函数:

Set(a,"a");Set(b,"b");Set(concatenate(a,b),"ab")

我预计第三条命令将创建一个名为 ab 的变量并将其值设置为 "ab",但它不接受变量名称中的字符串。

这两个选项中的任何一个都可以吗?如果可以,怎么办?

第二个选项今天绝对不可能 - 您可以考虑在 https://aka.ms/powerapps-ideas 中为此创建一个新功能请求。

对于第一个选项,如果您知道 'PowerAppsStyling' 对象将具有的所有字段,那么您可以在应用程序的开头(例如,在 App.OnStart 逻辑上)读取设置 SP 列表中的值并创建对象,以便您可以在整个应用程序中使用它,类似于

ClearCollect(localStylesTemp, PowerAppsStyling); // To make only 1 network call to the SP list
Set(
    LocalStyles,
    {
        Label: {
            Font: LookUp(localStylesTemp, Object = "Label" And Property = "Font", Value),
            Fill: LookUp(localStylesTemp, Object = "Label" And Property = "Fill", Value),
            Color: LookUp(localStylesTemp, Object = "Label" And Property = "Color", Value)
        },
        Button: {
            Font: LookUp(localStylesTemp, Object = "Button" And Property = "Font", Value),
            Fill: LookUp(localStylesTemp, Object = "Button" And Property = "Fill", Value),
            Color: LookUp(localStylesTemp, Object = "Button" And Property = "Color", Value)
        }
    })

之后您可以在您的应用中引用 LocalStyles.Label.Font

希望对您有所帮助!