首頁  >  文章  >  web前端  >  riot.js學習【二】mixin

riot.js學習【二】mixin

黄舟
黄舟原創
2017-01-16 16:01:511497瀏覽

Mixin 介紹

riot.js中,有個很重要的概念,就是mixin,顧名思義,大約的作用就是「混合」。

把物件的屬性、方法,混合進目前的context上下文哈,俗點的理解,就是this物件中。

看個「栗子」:

[code]<!Doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Riot.js测试02, Mixin</title>
    <script type="text/javascript" src="riot.js"></script>
    <script type="text/javascript" src="compiler.js"></script>
</head>
<body>
    <todo title="da宗熊"></todo>
</body>
<script type="riot/tag">
    <todo>
        <h1>{ title || "" }</h1>
        <p>年龄: { this.getAge() } </p>
        <p>身高:{ height }cm</p>

        // 这里可以省略script标签
        this.title = opts.title || "";
        // 调用mixin,mixin拿到的,是window.mixinObj
        // 也可以混合多个 this.mixin(a, b...);
        this.mixin(mixinObj);
    </todo>
</script>
<script type="text/javascript">
    var mixinObj = {
        age: 10,
        height: 180,
        getAge: function(){
            return this.age;
        }
    };
    riot.mount("todo");
</script>
</html>

運作效果如下:

看個「栗子」:

[code]// 如果要跨项目共享 mixin,可以考虑在riot里注册一个,而不是使用window级对象
riot.mixin("defaultData", {
    author: "da宗熊",
    email: "1071093121@qq.com"
});
riot.js學習【二】mixin運作效果如下:

看個「栗子」:

[code]this.mixin("defaultData"); // 现在this拥有了author和email属性了

運作效果如下:

You see,透過 this.mixin(mixinObj); window.mixinObj的屬性和方法,都體現在了this上。

注意: mixin只是將物件淺複製,所以多個自訂標籤共用透過mixin物件時,小心地互相影響

聲明式的mixin

mixin的參數,不只是對象,還能​​是字串。但使用字串時,必須事先在riot中,註冊一個mixin。

註冊方式:rrreee

在自訂標籤中使用:

rrreee



遇到的小坑

注意mixin的數序,後面的屬性,會覆寫前面的屬性遇到的小坑注意mixin的數序,後面的屬性,甚至會覆蓋前面的屬性

in會覆寫this的屬性

不要覆蓋掉riot.js自帶的屬性和方法,例如: opts, update, on, off, trigger等

以上就是riot.js內容,更多相關內容請關注PHP中文網(www.php.cn)!

🎜🎜🎜🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn