【问题标题】:CSJS XSP.partialRefreshGet does not seem to do the refreshCSJS XSP.partialRefreshGet 似乎没有进行刷新
【发布时间】:2013-12-29 09:01:05
【问题描述】:

我在左栏中的应用程序布局上有​​一个 xe:navigator(称为 navigator1)。在右栏中,我有一个 dynamicContent 控件。在导航器的 onClick 事件中,我对 navigator1 进行了部分刷新,但 dynamicContent1 没有刷新。我可以进行完全刷新,两者都会刷新,但要以性能为代价。我把这个放在 onClick 的 Client 端:

XSP.partialRefreshGet('#{id:dynamicContent1}');
return true

但是当我这样做时,dynamicContent1 没有刷新。我认为我的语法是正确的。如果在服务器端我对 dynamicContent1 进行部分刷新,它会正确刷新它,但 navigator1 不会刷新。所以问题是一个人可以对同一个 onClick 事件进行两次部分刷新吗?

【问题讨论】:

  • 尝试同时添加 XSP.partialRefreshGet('#{id:dynamicContent1}');和 XSP.partialRefreshGet('#{id:navigator1}');在客户端并删除了SS部分刷新但仍然不起作用。
  • 在 firebug 或 chrome 开发者工具中,在网络面板上。您是否看到正在发生网络请求?

标签: javascript xpages client-side


【解决方案1】:

如果我没看错你的问题,这只是一个时间问题:当你在同一个事件中定义客户端代码和服务器代码时,总是首先执行客户端代码。所以它会在它执行navigator 事件之前刷新你的dynamicContent 控件

将 CSJS 代码移动到 eventHandleronComplete 属性中。此属性未出现在事件的“漂亮面板”中,因此您需要直接导航到 <xp:eventHandler /> 标记(在源 XML 中或通过大纲),您会发现 onComplete 已列出在所有属性下。

将刷新代码放在onComplete 中将确保在第一次刷新之后完成第二次刷新,这将允许第二个目标反映由事件触发的任何更改.

额外提示:您还可以链式刷新:

XSP.partialRefreshGet("#{id:div1}", {
    onComplete: function() {
        XSP.partialRefreshGet("#{id:div2}", {
            onComplete: function() {
                XSP.partialRefreshGet("#{id:div3}", {
                    onComplete: function() {
                        XSP.partialRefreshGet("#{id:div4}");
                    }
                });
            }
        });
    }
});

这允许您刷新任意数量的目标,但同样的规则适用:如果您需要任何目标“了解”事件中对数据或组件所做的更改,则需要触发该事件的onComplete 属性中链的开始,不是作为事件本身的客户端代码。

【讨论】:

  • 因此,为避免任何混淆,最好以上述嵌套形式执行所有 oartialRefreshgets,而不是执行服务器端部分刷新。谢谢
  • 这里是导航器上 eventHandler 的代码 - :this.onComplete> 将在下一篇文章中继续
  • 如果我运行它除了完整的 UpDate 之外的任何东西,我都会收到错误 XSP 找不到。当然,即使没有 onComplete 代码,它也适用于完整的 UpDate。 FUll UpDate 耗时太长,我想加快速度。
  • “XSP 找不到”错误是因为您计算客户端 JavaScript 应该是 onComplete,而不是仅仅输入客户端 JavaScript。结果,它试图在SSJS中执行XSP.partialRefreshGet(),而XSP在SSJS中没有定义。
  • 在一些进一步的测试中,能够进行两次部分刷新大约需要 1/2(或更少)的时间,而我必须这样做。可能是一个重要的性能问题。再次感谢蒂姆愿意提供帮助。
猜你喜欢
  • 2010-10-29
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2020-06-07
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
相关资源
最近更新 更多