Bil*_*l F 1 javascript client-side xpages
我在“左列”的应用程序布局上有一个xe:navigator(称为navigator1)。在右列中,我有一个dynamicContent控件。在导航器的onClick事件中,我对navigator1进行了部分刷新,该刷新可以工作,但dynamicContent1没有刷新。我可以进行完全刷新,并且两者都可以刷新,但是会降低性能。我将其放在onClick的客户端:
XSP.partialRefreshGet('#{id:dynamicContent1}');
return true
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,dynamicContent1不会刷新。我认为我的语法正确。如果在服务器端我对dynamicContent1进行了部分刷新,则它会正确刷新它,但不会刷新navigator1。因此,问题是可以对同一个onClick事件进行两次局部刷新吗?
如果我正确地阅读了您的问题,那么这只是一个时序问题:当您在同一事件中定义客户端代码和服务器代码时,总是首先执行客户端代码。因此,它会在执行事件之前刷新您的dynamicContent控件。navigator
将CSJS代码移动到的onComplete属性eventHandler。该属性未显示在事件的“漂亮面板”中,因此您需要直接导航到<xp:eventHandler />标签(在Source XML中或通过Outline),然后onComplete在All Properties下找到列出的属性。
放置刷新代码onComplete将确保在第一次刷新完成之后才进行第二次刷新,这将使第二个目标反映事件触发的任何更改。
温馨提示:您还可以进行连锁刷新:
XSP.partialRefreshGet("#{id:div1}", {
onComplete: function() {
XSP.partialRefreshGet("#{id:div2}", {
onComplete: function() {
XSP.partialRefreshGet("#{id:div3}", {
onComplete: function() {
XSP.partialRefreshGet("#{id:div4}");
}
});
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
这使您可以刷新所需的任意数量的目标,但适用相同的规则:如果您需要任何目标“感知”事件中进行的数据或组件更改,则需要触发该事件的开始。该onComplete事件属性中的链,而不是该事件本身的客户端代码。
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |