ホームページ > 記事 > ウェブフロントエンド > riot.js 学習 [8] オブザーバー
Riot はカスタムタグ [コンポーネント] に基づいて開発されているためです。タグ内のプロパティとメソッドはすべてプライベートであり、外部からタグの内容にアクセスすることは困難です。
タグ内のコンテンツにアクセスしたい場合は、いくつかのありがたいメソッドがあります:
1. Window グローバル変数メソッド
[code]<script type="riot/tag"> <todo> <h1>{ title }</h1> this.title = opts.title || "da宗熊"; // window.TODO劫持现在的this对象 window.TODO = this; </todo> </script>
利点:
非常に暴力的でシンプル、window.TODO を通じてすべてのタグ コンテンツにアクセスできます。コンテンツ。
欠点:
ページに複数の同一のタグがある場合は適用されません
2. riot.mount
[code]<script type="riot/tag"> <todo> <h1>{ title }</h1> this.title = opts.title || "da宗熊"; </todo> </script> <script> // 这个todo,返回的是个数组!!! var todo = riot.mount("todo"); // todo = [tag]; </script>riot.mount の戻り値は、最初の「todo」タグの内容を取得するために必要です。 : var todo1 = todo[0];
[code]riot.compile("todo.tag", function(){ /*才能获取到返回的内容*/ var todo = riot.mount("todo")[0]; });
riot.observable
Riot では、単純なパブリッシャーを使用するだけで済みます。 jQuery のようなパブリッシャーを作成できます:
[code]var opts = riot.observable({ // some code... });
riot.observable によって生成されたパブリッシャーには、on、off、trigger、one などの一般的なメソッドがあります [jq に詳しい学生は、これを見れば何が起こっているかわかるはずです。名前]。
opts を例として、各メソッドの簡単な説明を示します:
[code]// 监听事件 opts.on("event1", function(data1, data2){ // 监听event1事件 // data1和data2是trigger传入的参数 // data1 = 1, data2 = 2 console.log(data1, data2); }); // 发布一个事件 // 该事件带有 1和2 作为参数 // 上面的on("event1")的回调fn将会执行 opts.trigger("event1", 1, 2); // 解除event1 的所有监听,第二个参数可选 // 如果有第二个参数[function],则只解绑该函数 opts.off("event1"); // one与on类似,只是one如果执行过一次,就自动解除绑定 opts.one("event1", function(data1){ console.log(data1); }); opts.trigger("event1", 1, 2);
最終的な出力は次のようになります:
[code]1 2 1
Riot は、内部および外部の通信問題を解決するために opts と observable を使用することを推奨します。例を見てみましょう:
[code]<!Doctype html> <html> <head> <meta charset="utf-8" /> <title>Riot.js 事件监听</title> <script type="text/javascript" src="riot.js"></script> <script type="text/javascript" src="compiler.js"></script> </head> <body> <todo></todo> </body> <script type="riot/tag"> <todo> <a href="javascript:;" onclick={ opts.login }>登录</a> opts.on("outside", function(value){ console.log("outside value:" + value); }); </todo> </script> <script type="text/javascript"> var opts = riot.observable({ login: function(params){ // 这里的this被todo更改了.. opts.trigger("outside", "登录成功..."); } }); riot.mount("todo", opts); </script> </html>
クリックしてログインすると、次のような効果が得られます:
イベントの監視と公開を通じて、社内および社外のコミュニケーションの問題に適切に対処することができます。データへのアクセス権を特定の側面で大幅に制限することもできます。
ただし、opt は主にタグに関連付けられています。
タグは、opts が「外部」に公開してリッスンすることを認識する必要があります。
opts は、タグがログイン メソッドを呼び出すことを認識する必要があります。
適切なチーム規範がなければ、これは大惨事になります。
SO:
どのモードや方法であっても、独自の適用可能なシナリオがあります。正しく使えばとどめを刺すことになるし、間違って使えば一歩も達成することが困難になる。行動を起こす前にもっと考えてください
上記は riot.js 学習 [8] Observer の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。