ajax - 我可以将 xPage 上的某些控件的加载延迟到页面加载后吗

标签 ajax delay lotus-domino xpages

是否可以延迟加载 xpage 上的某些控件?

这就是问题所在:假设您有一个执行全文搜索并在重复控件中显示结果的控件。此 ft 搜索可能需要很长时间,并且会使网页加载处于等待状态,直到搜索结果准备就绪。

我希望我的页面一开始就加载大部分数据,一些“耗时”的控件应该在初始加载后作为单独的请求加载到页面中。

这样用户会立即看到网页,但页面上的一些数据会稍后加载,而不会使网页处于等待服务器的状态。

可能吗?

最佳答案

使用渲染的缺点是所有值绑定(bind)仍然会计算,即使相应的标记没有发送到页面。所以这里的技巧是确保组件不存在,直到您希望它们存在。

每个组件都有一个 getChildren() 方法。这将返回一个可变的组件列表,它有一个 add() 方法。这允许您在页面加载时或稍后在事件期间动态地将组件添加到页面。出于您要尝试执行的操作的目的,您可能希望将添加“昂贵”组件推迟到后续事件。

创建一个直接附加到 View 根 () 的事件处理程序,给它一个唯一的 ID(例如“loadExpensiveComponentsEvent”,将其刷新模式设置为部分,将刷新 ID 设置为将包含搜索结果的任何 div 或面板,以及将其事件名称设置为任意事件(例如“loadExpensiveComponents”)。这可以防止您的事件被实际用户行为触发。将事件的代码设置为将注入(inject)您的组件的 SSJS。

然后添加一个脚本 block (),在页面加载完成后触发事件:

XSP.addOnLoad(函数(){ XSP.firePartial(null, "#{id:loadExpensiveComponentsEvent}"); });

您的页面将在没有搜索结果组件的情况下加载。页面完全加载后,将自动触发组件注入(inject)事件。

有关如何编写注入(inject)事件代码的指南,请打开从现有页面生成的 Java 文件,以查看需要注入(inject)哪些组件以及将其值设置为什么。

关于ajax - 我可以将 xPage 上的某些控件的加载延迟到页面加载后吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360307/

相关文章:

javascript - PHP判断客户端请求的dataType或responseType

java - IBM Domino 向其他用户发送提醒

android - 基本身份验证 session 管理 Domino

javascript - php变量和ajax javascript的问题

ajax - 我如何在我的 asp.net mvc Web 应用程序中使用 Ajax.beginform 更新两个 DOM 元素

python - 如何将 for 循环用作计时器?

ios - 如何正确设置CABasicAnimation(开始)时间?

android - 想要延迟 1 秒显示数字

java - 握手期间远程主机关闭连接

ajax - 为跨域配置google app engine应用