RIOT.JS - Observables
กลไก Observables ช่วยให้ RIOT ส่งเหตุการณ์จากแท็กหนึ่งไปยังอีกแท็กหนึ่ง API ต่อไปนี้เป็นสิ่งสำคัญในการทำความเข้าใจสิ่งที่สังเกตได้ของ RIOT
riot.observable(element)- เพิ่มการสนับสนุน Observer สำหรับองค์ประกอบวัตถุที่กำหนดหรือหากอาร์กิวเมนต์ว่างเปล่าจะมีการสร้างและส่งคืนอินสแตนซ์ที่สังเกตได้ใหม่ หลังจากนี้วัตถุจะสามารถทริกเกอร์และฟังเหตุการณ์ได้
var EventBus = function(){
riot.observable(this);
}
element.trigger(events) - เรียกใช้ฟังก์ชันโทรกลับทั้งหมดที่ฟังเหตุการณ์ที่กำหนด
sendMessage() {
riot.eventBus.trigger('message', 'Custom 10 Button Clicked!');
}
element.on(events, callback) - ฟังเหตุการณ์ที่กำหนดและดำเนินการโทรกลับทุกครั้งที่เกิดเหตุการณ์
riot.eventBus.on('message', function(input) {
console.log(input);
});
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างที่สมบูรณ์
custom10Tag.tag
<custom10Tag>
<button onclick = {sendMessage}>Custom 10</button>
<script>
sendMessage() {
riot.eventBus.trigger('message', 'Custom 10 Button Clicked!');
}
</script>
</custom10Tag>
custom11Tag.tag
<custom11Tag>
<script>
riot.eventBus.on('message', function(input) {
console.log(input);
});
</script>
</custom11Tag>
custom9.htm
<html>
<head>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/riot/3.13.2/riot+compiler.min.js"></script>
</head>
<body>
<custom10Tag></custom10Tag>
<custom11Tag></custom11Tag>
<script src = "custom10Tag.tag" type = "riot/tag"></script>
<script src = "custom11Tag.tag" type = "riot/tag"></script>
<script>
var EventBus = function(){
riot.observable(this);
}
riot.eventBus = new EventBus();
riot.mount("*");
</script>
</body>
</html>
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -