PowerApps - 如何在启用按钮之前将其禁用几秒钟?
PowerApps - How to disable a button for couple seconds before enabling it?
我有一个名为 Button_Import 的按钮,单击此按钮后,我将通知用户导入可能需要一些时间,然后它会调用数据工厂(通过逻辑应用程序),这需要数小时才能完成完成。
整个点击过程只需要几秒钟然后按钮将再次重新启用的问题。
我的目标是有意禁用该按钮大约 30 秒,以确保用户不会双击,从而避免可能重复调用数据工厂。
如何实现?
您可以使用计时器控件和几个 variables 来实现此逻辑。在按钮的 OnSelect 控件中,您可以使用类似于以下表达式的内容:
UpdateContext({ startTimer:true, buttonDisabled:true });
Notify("Imported started, it will take some time...");
MyDataFactoryProcess.Run(...)
并且按钮的 DisplayMode 将使用 buttonDisabled
变量来确定它是否被禁用:
If(!buttonDisabled, DisplayMode.Edit, DisplayMode.Disabled)
在 Timer 控件中,您可以使它依赖于 startTimer
变量,当它结束时,它会重置该变量和 buttonDisabled 变量。这些将是要更新的计时器的属性,以及它们各自的值:
Duration: 30000 // 30 seconds
Start: startTimer
OnTimerEnd: UpdateContext({ buttonDisabled:false, startTimer:false })
这样,当按下按钮时,它会自行禁用并启动定时器;当计时器结束时(在您在其 Duration 属性 中指定的时间之后)它将启用按钮并重置 startTimer 变量,以便再次按下按钮时计时器可以再次启动。
我有一个名为 Button_Import 的按钮,单击此按钮后,我将通知用户导入可能需要一些时间,然后它会调用数据工厂(通过逻辑应用程序),这需要数小时才能完成完成。
整个点击过程只需要几秒钟然后按钮将再次重新启用的问题。
我的目标是有意禁用该按钮大约 30 秒,以确保用户不会双击,从而避免可能重复调用数据工厂。
如何实现?
您可以使用计时器控件和几个 variables 来实现此逻辑。在按钮的 OnSelect 控件中,您可以使用类似于以下表达式的内容:
UpdateContext({ startTimer:true, buttonDisabled:true });
Notify("Imported started, it will take some time...");
MyDataFactoryProcess.Run(...)
并且按钮的 DisplayMode 将使用 buttonDisabled
变量来确定它是否被禁用:
If(!buttonDisabled, DisplayMode.Edit, DisplayMode.Disabled)
在 Timer 控件中,您可以使它依赖于 startTimer
变量,当它结束时,它会重置该变量和 buttonDisabled 变量。这些将是要更新的计时器的属性,以及它们各自的值:
Duration: 30000 // 30 seconds
Start: startTimer
OnTimerEnd: UpdateContext({ buttonDisabled:false, startTimer:false })
这样,当按下按钮时,它会自行禁用并启动定时器;当计时器结束时(在您在其 Duration 属性 中指定的时间之后)它将启用按钮并重置 startTimer 变量,以便再次按下按钮时计时器可以再次启动。