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" });
[code]this.mixin("defaultData"); // 现在this拥有了author和email属性了
You see,透過 this.mixin(mixinObj); window.mixinObj的屬性和方法,都體現在了this上。
注意: mixin只是將物件淺複製,所以多個自訂標籤共用透過mixin物件時,小心地互相影響
聲明式的mixin
mixin的參數,不只是對象,還能是字串。但使用字串時,必須事先在riot中,註冊一個mixin。
在自訂標籤中使用:
rrreee注意mixin的數序,後面的屬性,會覆寫前面的屬性遇到的小坑注意mixin的數序,後面的屬性,甚至會覆蓋前面的屬性
in會覆寫this的屬性不要覆蓋掉riot.js自帶的屬性和方法,例如: opts, update, on, off, trigger等
以上就是riot.js內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!