องค์ประกอบสามารถรวมทริกเกอร์ที่จะรันการดำเนินการในองค์ประกอบอื่น คุณต้องรีจิสเตอร์ทริกเกอร์ที่จะเรียกโดยองค์ประกอบ
องค์ประกอบจะระบุเพย์โหลดสำหรับทริกเกอร์ ซึ่งจะระบุให้กับการดำเนินการใดๆ ที่ถูกรันเมื่อมีการเรียกทริกเกอร์ คุณสามารถเลือกการดำเนินการที่จะรันสำหรับแต่ละทริกเกอร์ได้ องค์ประกอบที่สร้างขึ้นเพื่อทำงานร่วมกันสามารถเรียกทริกเกอร์เพื่อรันการดำเนินการได้โดยไม่ต้องมีการโต้ตอบกับผู้ใช้
รีจิสเตอร์ทริกเกอร์
สำหรับองค์ประกอบที่กำหนดเอง ระบบจะรีจิสเตอร์ทริกเกอร์เป็นส่วนหนึ่งของข้อมูลการรีจิสเตอร์สำหรับองค์ประกอบ ในการเพิ่มทริกเกอร์ ให้อัปเดตอาร์เรย์คุณสมบัติ "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
และเพิ่มฟังก์ชัน JavaScript ในออบเจกต์ viewModel
ที่จะเรียก 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"
นอกจากนี้ยังส่งผ่าน triggerPayload
ที่มีฟิลด์เดียว "whoAreYou"
ค่าเหล่านี้ "helloWorldWhoAreYou"
และ "whoAreYou"
จะตรงกับค่าที่คุณป้อนเมื่อคุณรีจิสเตอร์ทริกเกอร์ในขั้นตอนก่อนหน้า
หมายเหตุ:
การรันการดำเนินการไม่มีลำดับที่กำหนดไว้ล่วงหน้า แม้ว่าการดำเนินการแต่ละรายการจะถูกเรียกตามลำดับที่แสดง แต่จะไม่มีการรอให้แต่ละรายการเสร็จสมบูรณ์ก่อนที่จะเรียกการดำเนินการถัดไป หากการดำเนินการทำการเรียกแบบอะซิงโครนัส การดำเนินการอาจไม่เสร็จสมบูรณ์ก่อนที่จะมีการรันการดำเนินการครั้งถัดไป