定址
使用者介面工具箱中的所有視圖都支援定址,包括在使用者介面頁面中定義的其他視圖內形成巢狀的視圖。
定址方法是階層式樹狀結構,其根定義為顯示頁面中最上層位置的 / 。 定址方法的結構類似於用於目錄的結構。 載入頁面時,會新增樹狀結構中的後續節點。
可用的節點有兩種基本類型:「儲存器」和「元素」。 儲存器節點包括其他節點,例如元素、視圖及其他儲存器節點。
限制: 已淘汰的 Coach 工具箱中的視圖無法使用所述的定址方法來定址。
一般而言,當某些視圖中使用視圖事件或公式所呼叫的函數時,您會在使用者介面視圖中使用定址。 函數可以行內指定,例如在頁面上自訂 HTML 的 JavaScript Script 區塊中,或在視圖的 行為 內容中的「行內 JavaScript 」區段中。
定址樣式
支援相對和絕對定址樣式。 使用 / 啟動參照意味著絕對參照,例如,從視圖樹狀結構的根層次開始。 在路徑開頭省略 / 表示 "from where I
am"。 在參照中使用 .. 會導致參照回復層次,因為檔案目錄樹狀結構會行為。
在公式中,參照是從您設定其公式之欄位的參照點計算而來:
- 與現行欄位位於相同層次的欄位會使用欄位名稱來參照 (而不是在參照開頭使用
/)。 - 上方一個層次的欄位可以參照為
../FieldOneLevelAboveMe。 - 上方兩個層次的欄位會參照為
../../FieldOneLevelAboveMe,依此類推。 - 在某些情況下,使用
../的相對定址可能很方便。
用來存取視圖的 JavaScript 方法
- 從自訂 HTML
- 若要在 JavaScript 區塊中存取視圖,請使用頁面廣域視圖及其
page.ui.get(ControlId path)方法。 例如,假設您有一個名為 Text1 的「文字」視圖,且基於驗證目的,您想要在從按鈕的 On click 事件呼叫的函數中存取它。 如果要這麼做,請使用類似下列範例的程式碼:var myTextField = page.ui.get("/Text1"); myTextField.getValue() // returns the value in the text field myTextField.focus() // would set the focus to the text field.
- 從視圖的行內 JavaScript
- 若要從儲存器視圖中包含的功能存取視圖,請使用下列其中一個選項:
bpmEventHelper.ui.getView(ControlId [, thisview]) thisview.ui.get(ControlId)
- 在公式中
- 可以使用下列語法在公式中參照視圖:
${FieldName}是指其control id = FieldName的視圖。@{FieldName}是指其control id = FieldName的視圖值。${FieldName).getValue()和@{FieldName}是相等的。
不可定址的佈置視圖
必須從位址中省略純粹用於佈置目的的視圖。 例如,您可以使用
/FirstName 位址 (而非 /VerticalLayout/FirstName) 來處理 VerticalLayout 視圖中巢狀的 FirstName 視圖。提示: 若要從位址中排除不可定址的自訂儲存器視圖,請在自訂視圖的
load 函數中,於行內 JavaScript 區段的 行為下,將下列內容設為 true :this.constructor.prototype.IS_ADDRESS_INVISIBLE = true;可定址自訂視圖
當您建立可定址的自訂視圖時,請在
load 方法中呼叫下列函數:bpmEventHelper.ui.loadView(this)
如果您的自訂視圖具有內容框,請改為呼叫下列函數:
bpmEventHelper.ui.loadContainer(this)在視圖的
unload 函數中,呼叫適當的函數:bpmEventHelper.ui.unloadView(this)或bpmEventHelper.ui.unloadContainer(this)表格中對等節點欄位的參照
在表格中使用公式時,您可以使用在欄位名稱後面具有
= 的語法來存取 my 列中的欄位。 例如,假設您已在表格中定義 Quantity (Integer)、 Cost (Decimal) 及 Total (Decimal) 視圖。 您可以使用下列公式來指定 Total 視圖的值:@{Quantity=} * @{Cost=}請注意, Total 視圖不需要任何資料連結,這表示表格中不需要任何總計資料欄位。helper 函數
例如,您可以在 bpmext.ui.View 名稱空間內使用 helper 函數 getParent 及 getSibling 。 在範例中,很容易在不知道整個階層的情況下取得容器視圖或對等節點視圖。
例如,假設您有一個名為 CV的儲存器視圖,其中包括兩個名為 Button1 和 Button2的視圖。 假設 btn1View 是 Button1的 bpmext.ui.View 物件,您可以使用 btn1View.ui.get(“CV”) 或 btn1View.ui.getParent();來取得 CV 。 您可以使用 bt1View.ui.getSibling(“Button2”)來取得 Button2 。