首页 > web前端 > js教程 > 正文

riot.js学习【三】事件

黄舟
发布: 2017-01-16 16:04:07
原创
1828人浏览过

每个自定义标签从编译到构建,到最后的销毁,riot.js都提供了相应的事件。

内置有4种事件:

update

在标签真正刷新ui前执行。它允许我们在更新ui前,改写context的数据

updated

在标签ui更新之后执行。这时候,我们可以对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>
登录后复制

效果如下:

169.png

输出分别为: update -> updated -> mount 

因为没有调用this.unmount(); 

所以没打印出 unmount

事件的绑定,也可以类似jquery一样,一次绑定多个事件,又或者自己去触发事件

绑定多个:

[code]this.on("update mount", function(){
    // update和mount都会经过这里
});
登录后复制

触发事件:

豆包爱学
豆包爱学

豆包旗下AI学习应用

豆包爱学 674
查看详情 豆包爱学
[code]this.trigger("update", "参数1", "参数2"...);
登录后复制

新手遇坑:

unmount事件,在this.unmount()之后触发,或者自定义标签,重新构建时,自动触发 

[code]riot.mount("todo");
riot.mount("todo"); // 第二次会先触发unmount,然后才是update/updated/mount
登录后复制

事件回调的第一个参数,并不是event
[code]this.on("update", function(a, b){
    console.log(a, b); // 1, 2
});
this.trigger("update", 1, 2);
登录后复制

这一点跟jquery是大大的不一样

以上就是riot.js学习【三】事件的内容,更多相关内容请关注PHP中文网(www.php.cn)!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号