WebObjects/Project WONDER/Frameworks/Ajax/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 的演示。
- 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