RIOT.JS - 可觀察物件



可觀察物件機制允許 RIOT 從一個標籤向另一個標籤傳送事件。以下 API 對於理解 RIOT 可觀察物件很重要。

  • riot.observable(element) − 向給定的物件元素新增觀察者支援,如果引數為空,則建立一個新的可觀察物件例項並返回。之後,該物件能夠觸發事件並監聽事件。

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>

將產生以下結果 −

廣告
© . All rights reserved.