没有内置的计时器组件,但有几种方法可以实现这一点。
JS指令
完成此任务的最强大的方法是使用 DotVVM 3 @js 指令将 JS 文件链接到您的页面,然后从 JS 触发 NamedCommand。完整的文档在这里:https ://www.dotvvm.com/docs/3.0/pages/concepts/client-side-development/js-directive/call-dotvvm-from-js 。您需要的Javascript(大致)是这样的:
export default context => {
setInterval(function () { context.namedCommands["Refresh"]() }, 5000)
return {
// declare additional JS commands here
}
}
然后NamedCommand
将页面中的组件与您的刷新命令一起使用:
<dot:NamedCommand Name="Refresh" Command={command: RefreshData()} />
但是,您应该更喜欢对后台作业使用staticCommand绑定。
@service myUsersService = Full.Name.Of.MyUsersService
<dot:NamedCommand Name="Refresh" Command={staticCommand: UsersTotal = myUsersService.FetchUsersTotal()} />
隐藏按钮
虽然该@js
指令是一个强大的功能,但我想说,对于您的用例,使用此命令添加一个隐藏按钮并从 JS 触发它会更简单。
<dot:Button Click={staticCommand: same as above} Visible=false ID="refreshButton" />
<dot:InlineScript>
setInternal(function () { document.getElementById("refreshButton").click() }, 5000)
</dot:InlineScript>
HTML 元标记
更简单的方法是使用<meta http-equiv="refresh" content="5" >
,它会指示浏览器每 5 秒重新加载整个页面。即使没有 JS 也可以工作,但只有在您不介意页面总是刷新时才可以接受。