Méthode de construction
Riot construit le contenu DOM via des "balises personnalisées" par défaut, mais vous pouvez également spécifier quelle "balise personnalisée" utiliser pour construire le DOM via l'attribut "riot-tag".
Par exemple :
[code] <div riot-tag="todo" title="da宗熊"></div> 等同于: <todo title="da宗熊"></todo>
Ou, vous pouvez également spécifier les éléments construits dans riot.mount :
[code]<div id="content"></div> <script> // 给id="content"的元素,构建todo的内容 // 第一个参数,可以是dom元素,too riot.mount("#content", "todo"); </script>
Style
dans In Balises personnalisées Riot, vous pouvez utiliser la balise style pour écrire des styles pour les composants. Riot insérera tout le contenu du style dans la balise head, vous n'aurez donc pas à vous soucier des styles définis à plusieurs reprises.
[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>
Génération finale :
Bien que la balise todo ait été appelée deux fois, un seul style a finalement été généré.
chaque boucle
Pour implémenter des listes comme ul et ol, la boucle est absolument nécessaire. Riot a un attribut each intégré, qui est utilisé pour boucler afin de générer le contenu de "list-like". " [Nous ne sommes pas seulement que vous puissiez parcourir des listes et même des objets].
[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>
est généré comme suit :
Si le contenu de la liste est un objet, Riot propose également une méthode d'accès rapide :
[code]<script type="riot/tag"> <todo> <ul each={ list }> <!-- 这里的 context 已经是 list 咧 --> <li>{ title }</li> </ul> // 列表内容 this.list = [ {title: "第一个"}, {title: "第二个"} ]; </todo> </script>
Les résultats sont les suivants :
On voit que le contexte [cet objet] dans l'expression entre crochets [{ expression }] n'est plus le contexte de l'étiquette, mais devient l'élément actuel de l'objet actuellement parcouru.
Si nous avons besoin d'accéder au contexte de l'étiquette dans chaque boucle, nous pouvons y accéder via le mot-clé "parent".
Par exemple :
[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>
Dans l'objet événement, vous pouvez accéder à l'objet actuel dans chaque boucle actuelle via event.item.
Ce qui précède est le contenu de l'apprentissage de riot.js [6] Chowder 2. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !