Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPages:单页应用程序数据视图刷新_Xpages - Fatal编程技术网

XPages:单页应用程序数据视图刷新

XPages:单页应用程序数据视图刷新,xpages,Xpages,我有一个单页应用程序,它有两个页面-第一个页面包含数据视图控件(我使用向导创建页面-我没有创建任何自定义控件,因为整个应用程序只包含4个页面!),第二个页面然后显示在数据视图控件中选择的文档。这很好用!我的问题是数据视图控件中显示的文档没有被刷新-我需要手动刷新它们才能显示。我想这不是问题,只要每5秒自动刷新一次(只有大约20个用户在使用该应用程序): 这将完美地刷新页面-如果用户位于第二页,他/她将使用数据视图控件(即第1页)跳回页面,而不会停留在打开的文档上(即第2页) 如何使数据视图控

我有一个单页应用程序,它有两个页面-第一个页面包含数据视图控件(我使用向导创建页面-我没有创建任何自定义控件,因为整个应用程序只包含4个页面!),第二个页面然后显示在数据视图控件中选择的文档。这很好用!我的问题是数据视图控件中显示的文档没有被刷新-我需要手动刷新它们才能显示。我想这不是问题,只要每5秒自动刷新一次(只有大约20个用户在使用该应用程序):


这将完美地刷新页面-如果用户位于第二页,他/她将使用数据视图控件(即第1页)跳回页面,而不会停留在打开的文档上(即第2页)

如何使数据视图控件定期刷新而不返回到数据视图控件

先谢谢你
ursus

我不认为您真的希望每n秒刷新一次视图,因为这有可能成为一个巨大的性能问题,再加上您指出的奇怪的原因。有两种方法可以实现这一点:

  • 在应用程序页属性中,将resetContent设置为true
  • 创建onAfterTransitionIn事件以对数据视图或其容器执行XSP.partialRefreshGet。这样,当有人登陆视图时,它将刷新其内容。以下是一个例子:

    var widget = dijit.byId("#appPageName");
    dojo.connect(widget, "onAfterTransitionIn", function(moveTo, dir, transition, context, method){
        console.log("onAfterTransitionIn args=",arguments);
        var appPageChildren = dojo.query("[id='" + appPageName + "']").children()[0];
        var contentId = appPageChildren.id;
        console.log("contentId=",contentId);
        setTimeout(function() {
            XSP.partialRefreshGet(contentId, {});
        },200);
    });
    

感谢您抽出时间回答我的问题。我已经尝试过resetContent->就我所知,这在这个上下文中没有任何作用-当后端添加新文档时,它肯定不会刷新视图。谢谢你的代码,但这不是我要找的。“所有”我真正想要的是视图(数据视图控件)在其他用户添加新文档时刷新。实现这一点的现代方法是查看Facebook或Google+。当新内容可用时,系统会通知您可以选择刷新以查看新内容的时间点。然而,对于nsf,目前还没有实现这一点的机制(至少在xsp中可以找到)。因此,我将通过a)在有人登陆视图时更新内容和/或b)为视图提供“拉入刷新”功能来实现这一点。我这样说是因为,如果应用程序的增长速度超过了您的少数用户,那么自动更新将成为性能瓶颈,并降低用户体验。您好。我明白你的意思,这对办公室工作人员来说是个好办法。叉车司机正在生产中使用此应用程序。让用户刷新视图意味着他/她需要停下来,把手从方向盘上拿开,然后刷新视图。如果他们无论如何都要与应用程序交互(接受下一个生产订单,这是他们在第2页上所做的),这是可以的,但不仅仅是看他们是否有订单:o(我目前正在考虑有两个页面,一个是自动刷新,另一个是接受订单。
var widget = dijit.byId("#appPageName");
dojo.connect(widget, "onAfterTransitionIn", function(moveTo, dir, transition, context, method){
    console.log("onAfterTransitionIn args=",arguments);
    var appPageChildren = dojo.query("[id='" + appPageName + "']").children()[0];
    var contentId = appPageChildren.id;
    console.log("contentId=",contentId);
    setTimeout(function() {
        XSP.partialRefreshGet(contentId, {});
    },200);
});