在這個步驟中,將會告訴您如何引發看到的已註冊觸發程式。
元件可在任意點引發觸發程式。觸發程式通常由使用者互動,透過點選按鈕或選取表格中的資料列引發。不過其實元件可根據任意條件引發觸發程式,例如因 REST 呼叫而造成資料變更時。
在此範例中,當您按一下影像後將會透過 whoAreYou
特性目前的值引發觸發程式。
複查 render.js
檔案並查看 SampleComponentViewModel
物件。
引發觸發程式:
複查 SampleComponentViewModel
物件中呼叫 Sites SDK 以引發觸發程式的函數。
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': triggerName, 'triggerPayload': { 'payloadData': 'some data here' } }); };
現在您需要在使用者介面中呼叫該函數來引發觸發程式。複查 render.js
檔案並更新 sampleComponentTemplate
物件以包含以下項目:
'<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
在 SampleComponentViewModel
物件中,您會看到按一下影像時所呼叫的 JavaScript 函數。此函數會呼叫 Sites SDK 並指示它觸發為觸發程式 "imageClicked"
定義的所有動作,此為從步驟 2 中的 click
連結傳入的值。也會透過包含單一欄位 payloadData
的 triggerPayload
傳送,及透過靜態值 'some data here'
傳送。imageClicked
和 whoAreYou
與註冊觸發程式的 appinfo.json
檔案 (上一個步驟中) 中的這些值相符。
在範例程式碼中,觸發程式會透過 click
連結的 data-bind 引發,並傳入觸發程式名稱 imageClicked
。根據使用者選擇的版面配置,目前有 3 種 <scs-image>
元件的呈現。為了確保會針對每個版面配置引發觸發程式,請編輯 render.js
檔案進行以下變更。
從不同版面配置引發觸發程式。找到此程式碼的兩個項目:
'<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}">' +
將程式碼變更為:
'<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
指定要傳送至觸發程式的有效負載。請將以下程式碼:
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': triggerName, 'triggerPayload': { 'payloadData': 'some data here' } }); };
改為使用以下程式碼:
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': triggerName, 'triggerPayload': { 'payloadData': self.imageBannerText() // pass banner text as payload } }); };
將 render.js
檔案同步或上傳至 Oracle Content Management 執行處理伺服器。
現在您已複查所需的程式碼,可以連結此觸發程式,讓您的自訂元件可以在按一下按鈕時引發。
檢查步驟 6 的結果
您現在應該可以註冊要對觸發程式執行的動作,而且在引發觸發程式時也能執行該動作:
重新整理網站中的頁面,讓網站產生器能夠取得元件的變更。
將頁面切換為「編輯」模式
將您的元件拖放到頁面中。
顯示您元件的「設定值」面板。
選取「設定值」面板頂端的連結頁籤。
選取觸發程式動作作為「連結類型」。
按一下您看到的已註冊 imageClicked 觸發程式。
在對話方塊中,從頁面動作區段拖曳顯示警示動作。
在訊息欄位中選取 payloadData 值,這是您在註冊觸發程式時輸入的有效負載。
關閉「設定值」面板,並將網站產生器切換為「預覽」模式。
按一下元件中的影像。
便會出現警示,顯示 no message defined
,因為您尚未指定 imageBannerText
值。
將頁面切換為「編輯」模式,再次啟動該元件的「設定值」面板。
按一下自訂設定值並輸入 Workplace。
關閉「設定值」面板,並將頁面切換為「預覽」模式。
按一下元件中的影像。
現在應該會顯示更新的有效負載 Workplace
,這是從您對 click
連結所做的變更呼叫。
您可以在觸發程式引發後執行任意數目的動作。
註:
沒有預先定義的動作執行順序。雖然動作會依所列示的順序呼叫,但並不會等待動作完成後才呼叫下一個動作。如果某個動作進行非同步呼叫,在下一個動作執行前它也許還沒完成。繼續進行步驟 7:註冊動作。