WebObjects/Project WONDER/Frameworks/Ajax/AjaxUpdateContainer
外观
AjaxUpdateContainer 是一种特别酷的组件,它允许您页面上的任何组件在后台刷新,而无需完全刷新页面。AjaxUpdateContainer 使用 WOComponentContent。当它被排序时,其 webobjects 标记之间的所有内容都会被刷新。
如果您的 AjaxUpdateContainer 包含组件操作,您必须在您的应用程序中包含 ERExtensions 框架,并扩展 ERXApplication 和 ERXSession,如 Project Wonder 快速入门 指南中所述。如果您的所有操作都是更新容器内的直接操作,则不需要这样做。
此外,如果您打算使用“observeFieldID”绑定,您也必须包含 ERExtensions 框架(如上所述)。这个要求是因为需要一个部分表单提交(将修改后的观察字段发送回服务器),而 WOForm 需要更改才能识别出它应该为观察到的值取值。
对于每个 AjaxUpdateContainer,都会自动生成一个名为“<id>Update()”的便捷 Javascript 函数。例如,如果您的 id 是“messageBox”,那么 Javascript 函数将被命名为“messageBoxUpdate()”。调用此函数将导致容器刷新。
Project Wonder 中的 AjaxExamples 项目中提供了一系列 AjaxUpdateContainer 演示。
- id(必需) - 将包含您内容的生成 HTML 元素的 ID
- elementName - 容器的 HTML 元素名称(“div”或“span”,默认为“span”)
- observeFieldID - 这提供了类似于 Ruby on Rails 上 observe_field 帮助器的支持。observeFieldID 的值应该是您要观察的表单元素的 id(例如,在 WOTextField 上设置 id = "Something" 并在您的更新容器上设置 observeFieldID = "Something";)。当字段更改时,这将导致您正在观察的字段提交其新值,并且更新容器将刷新。这允许您执行诸如依赖 WOPopUpButtons 之类的事情,其中一个弹出按钮发生更改,导致第二个弹出按钮使用新值刷新。我只在两者都在同一表单中时测试过这一点。
- frequency - 当指定时,更新容器将以该速率(以秒为单位)自动定期刷新
- decay - 如果容器更新并且内容没有更改,则每次请求都会将更新速率降低此因子
- evalScripts - 容器更新时是否应评估脚本标记
- insertion
- onComplete
- onSuccess
- onFailure
- onException