元件可包含將在其他元件中執行動作的觸發程式。您必須註冊觸發程式,元件才能夠引發觸發程式。
元件提供有效負載給觸發程式,這會傳送到觸發程式引發時所執行的任何動作。您可以為每個觸發程式選取將被執行的動作。為共同運作而建立的元件,可以在無須使用者互動的情況下,自動引發觸發程式來執行動作。
註冊觸發程式
就自訂元件而言,觸發程式會註冊成為元件之註冊資料的一部分。若要新增觸發程式,請更新元件支援之各個觸發程式的 "triggers"
特性陣列。此外,還必須指定觸發程式支援的有效負載,如此才能建立使用者介面,讓使用者可以將有效負載內的值對應至動作所支援的特性。
appinfo.json
檔案並複查 "triggers":[],
項目:
"triggers": [{ "triggerName": "helloWorldWhoAreYou", "triggerDescription": "Show Who I Am", "triggerPayload": [{ "name": "whoAreYou", "displayName": "Who I Am" }] }],
將檔案同步到網站伺服器。
在此範例觸發程式項目中,您定義了 triggerName
("helloWorldWhoAreYou"
)。此名稱值必須是唯一的。接著,提供觸發程式的描述 ("Show Who I Am"
),供使用者介面對話方塊用來顯示您的觸發程式。最後,為觸發程式定義單一值有效負載;使用者將可以選取此有效負載中的項目,將項目對應至動作的欄位。
觸發程式註冊之後,當您前往元件「設定值」面板中的連結頁籤時,應該就能夠見到並選取該觸發程式。
引發觸發程式
元件可在任意點引發觸發程式。觸發程式通常由使用者互動引發,例如點選按鈕或選取表格中的資料列。元件可根據任意條件引發觸發程式,例如因 REST API 呼叫而造成資料變更時。您可以在觸發程式引發後執行任意數目的動作。
render.js
檔案並在 viewModel
物件中新增 JavaScript 函數,此函數將會呼叫 Sites SDK 來引發觸發程式。
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': 'helloWorldWhoAreYou', 'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"} }); };
-edit template.html
),並且在 </div>
之前新增一個按鈕。
<button data-bind="click raiseTrigger">Who Am I?</button>
將 render.js
檔案同步或上傳至您的 Oracle Content Management 執行處理伺服器。
在 ViewModel
物件中,您建立了一個點選按鈕後所呼叫的 JavaScript 函數。此函數會呼叫 Sites SDK 並指示它觸發為此觸發程式 "helloWorldWhoAreYou"
定義的所有動作。此函數也透過包含單一欄位 ("whoAreYou"
) 的 triggerPayload
傳送。"helloWorldWhoAreYou"
和 "whoAreYou"
這兩個值會是您在上一個步驟中註冊觸發程式時輸入的值。
註:
沒有預先定義的動作執行順序。雖然動作會依所列示的順序呼叫,但並不會等待動作完成後才呼叫下一個動作。如果某個動作進行非同步呼叫,在下一個動作執行前它也許還沒完成。