ホームページ >ウェブフロントエンド >jsチュートリアル >riot.js 学習 [6] チャウダー 2
構築方法
Riot はデフォルトで「カスタム タグ」を通じて DOM コンテンツを構築しますが、属性「riot-tag」を通じて DOM の構築にどの「カスタム タグ」を使用するかを指定することもできます。
例:
[code] <div riot-tag="todo" title="da宗熊"></div> 等同于: <todo title="da宗熊"></todo>
または、riot.mount でビルドされた要素を指定することもできます:
[code]<div id="content"></div> <script> // 给id="content"的元素,构建todo的内容 // 第一个参数,可以是dom元素,too riot.mount("#content", "todo"); </script>
Style
Riot カスタム タグでは、style タグを使用してコンポーネントのスタイルを記述することができます。 Riot はすべてのスタイル コンテンツを head タグに挿入するため、スタイルが繰り返し定義されることを心配する必要はありません。
[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> <todo></todo> </body> <!-- 最前面一定要有空格或TAB --> <script type="riot/tag"> <todo> <label>da宗熊</label> <!-- 自定义样式 --> <style> label{color:#ccc;} </style> </todo> </script> <script type="text/javascript"> riot.mount("todo"); </script> </html>
最終的に生成されたもの:
todoタグは2回呼び出されていますが、最終的に生成されたスタイルは1つだけです。
各ループ
ul や ol のようなリストを実装するには、ループが絶対に必要です。Riot には、「リストのような」コンテンツを生成するためのループに使用される各属性が組み込まれています [リストを走査するだけでなく、オブジェクト】。
[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> <!-- 遍历列表 --> <ul each={ item in list }> <li>{ item }</li> </ul> <!-- 遍历对象 --> <ul each={ key,value in obj }> <li>{ key }:{ value }</li> </ul> // 列表内容 this.list = [ "内容1", "内容2", "内容3" ]; // 对象内容 this.obj = { name: "da宗熊", age: 26 }; </todo> </script> <script type="text/javascript"> riot.mount("todo"); </script> </html>
は次のように生成されます:
リストの内容がオブジェクトの場合、Riotはクイックアクセスメソッドも提供します:
[code]<script type="riot/tag"> <todo> <ul each={ list }> <!-- 这里的 context 已经是 list 咧 --> <li>{ title }</li> </ul> // 列表内容 this.list = [ {title: "第一个"}, {title: "第二个"} ]; </todo> </script>
結果は次のようになります:
括弧式 [{ 式 } ] 内のコンテキスト [このオブジェクト] はラベルのコンテキストではなくなり、現在のトラバーサル オブジェクトの現在の項目になります。
各ループ内のラベルのコンテキストにアクセスする必要がある場合は、「parent」キーワードを通じてアクセスできます。
例:
[code]<script type="riot/tag"> <todo> <ul each={ items }> <li> <span>{ title }</span> <a onclick={ parent.remove }>删除</a> </li> </ul> this.items = [{title: "da宗熊"}]; remove(e){ // 获取到当前点击, each循环中的item // 这里就是获取到了 {title: "da宗熊"} 这个对象 var item = e.item; var index = this.items.indexOf(item); // 把当前项删掉 // 数组的slice,push等操作,自带了this.update操作,SO,这里省了this.update调用 this.items.splice(index, 1); } </todo> </script>
イベント オブジェクトでは、event.item を通じて現在の各ループ内の現在のオブジェクトにアクセスできます。
上記は、riot.js 学習 [6] Chowder 2 の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。