コンパイルから構築、最終的な破棄まで、カスタム タグごとに、riot.js は対応するイベントを提供します。
4 つの組み込みイベントがあります:
update
ラベルが実際に UI を更新する前に実行されます。これにより、ラベル UI が更新された後に
updated
が実行される前にコンテキスト データを書き換えることができます。このとき、dom
mount
を操作できます。タグが構築されてページに配置された後、実行されます。
unmount
タグがページから削除されたときに実行されます。 [一般的に this.unmount() が呼び出されたときに実行されます]
例:
[code]<!Doctype html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="riot.js"></script> <script type="text/javascript" src="compiler.js"></script> </head> <body> <todo></todo> </body> <!-- 最前面一定要有空格或TAB --> <script type="riot/tag"> <todo> <p>一个自定义标签 BY { title || "" }</p> // 监听4种事件 // 执行顺序,跟绑定顺序无关 this.on("updated", function(){ // 这里可以操纵DOM console.log("updated"); }).on("mount", function(){ console.log("mount"); }).on("unmount", function(){ console.log("unmount"); }).on("update", function(){ // 这里可以注入数据 this.title = "da宗熊"; console.log("update"); }); </todo> </script> <script type="text/javascript"> riot.mount("todo"); </script> </html>
結果は次のとおりです:
出力は次のとおりです: update -> updated ->mount
は呼び出されません ();
そのため、unmount
イベントのバインドは出力されません。jquery のように複数のイベントを一度にバインドすることも、自分でイベントをトリガーすることもできます
複数をバインド:
Triggerイベント:
[code]this.on("update mount", function(){ // update和mount都会经过这里 });
初心者の落とし穴:
unmount イベントは this.unmount() の後にトリガーされるか、再構築時にカスタム ラベルが自動的にトリガーされます
[code]this.trigger("update", "参数1", "参数2"...);
[code]riot.mount("todo"); riot.mount("todo"); // 第二次会先触发unmount,然后才是update/updated/mount
これは jquery とは大きく異なります
上記は riot.js 学習 [3] イベントの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。