Maison > interface Web > js tutoriel > le corps du texte

apprentissage de riot.js [6] Chaudrée 2

黄舟
Libérer: 2017-01-16 16:17:28
original
1243 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Génération finale :

apprentissage de riot.js [6] Chaudrée 2

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>
Copier après la connexion

est généré comme suit :

apprentissage de riot.js [6] Chaudrée 2

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>
Copier après la connexion

Les résultats sont les suivants :

apprentissage de riot.js [6] Chaudrée 2

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>
Copier après la connexion

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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!