跳转到内容

WebObjects/Project WONDER/Frameworks/Ajax/AjaxUpdateContainer

来自维基教科书,开放的书籍,为开放的世界

AjaxUpdateContainer

[编辑 | 编辑源代码]

AjaxUpdateContainer 是一个非常酷的组件,它允许页面上的任何组件在后台刷新,而无需刷新整个页面。AjaxUpdateContainer 使用 WOComponentContent。其 webobjects 标记之间的所有内容在它被排序时都会被刷新。

如果您的 AjaxUpdateContainer 包含组件操作,您**必须**在您的应用程序中包含 ERExtensions 框架,并像 Project Wonder 快速入门 指南中描述的那样扩展 ERXApplication 和 ERXSession。如果所有操作都在更新容器内的直接操作中,则不需要这样做。

此外,如果您打算使用 "observeFieldID" 绑定,您也必须包含 ERExtensions 框架(如上所述)。之所以有此要求是因为需要部分表单提交(将修改后的观察字段发送回服务器),而 WOForm 要求进行更改以识别它应该为观察值获取 ValuesFromRequest。

为每个 AjaxUpdateContainer 自动生成一个便捷的 Javascript 函数,该函数的格式为 "<id>Update()"。例如,如果您的 id 为 "messageBox",则 Javascript 函数将被命名为 "messageBoxUpdate()"。调用此函数将导致容器刷新。

在 Project Wonder 的 AjaxExamples 项目中提供了一系列 AjaxUpdateContainer 的演示。

Wonder 绑定
[编辑 | 编辑源代码]
  • id (必需) - 将包含您内容的生成的 HTML 元素的 ID
  • elementName - 容器的 HTML 元素名称 ("div" 或 "span",默认为 "span")
  • observeFieldID - 这提供了类似于 Ruby on Rails 上的 observe_field 帮助器的支持。observeFieldID 的值应该是您要观察的表单元素的 id(例如,在 WOTextField 上设置 id = "Something" 并设置 observeFieldID = "Something"; 在您的更新容器上)。当字段更改时,这将导致您观察的字段提交其新值,并且更新容器将刷新。这使您能够执行诸如依赖 WOPopUpButtons 之类的操作,其中一个弹出按钮更改,导致第二个弹出按钮使用新值刷新。我仅在两者都在同一表单中时测试过此功能。
Prototype 绑定
[编辑 | 编辑源代码]

Prototype 文档

  • frequency - 当指定时,更新容器将以该速率(以秒为单位)自动定期刷新
  • decay - 如果容器更新且内容没有更改,则每次请求将更新速率降低此因子
  • evalScripts - 容器更新时是否应评估脚本标签
  • insertion
  • onComplete
  • onSuccess
  • onFailure
  • onException
华夏公益教科书