[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> <!-- 調用自定義標簽 --> <timer start="10"></timer> </body> <!-- 最前面一定要有空格或TAB,留意它的type --> <script type="riot/tag"> <timer> <h3>Times: { index }</h3> this.index = opts.start || 0; var self = this; tick(){ // 每個1秒,index自增 this.index++; // 調用this.update更新UI【最欣賞這個了,能自己控制】 this.update(); } var timer = setInterval(this.tick, 1000); </timer> </script> <!-- 調用riot,啟動自定義標簽timer --> <script type="text/javascript"> riot.mount("timer"); </script> </html>
效果如下[每個1秒,times的值,就+1]:
說一下,新人會遇到的坑:
script type=”riot/tag”
compiler會遍歷所有帶有script type=”riot/tag” 的元素,如果script有src,則會加載外部的文件,如果沒有src,則編譯script里的內容。
PS: script中編寫的內容,必須是空格或tab開頭,如果直接跟著 “<”,是編譯不出內容的。
這跟它內部的解析器有關【第一次還挺坑的…】
tick()
該函數的this對象,是當前的自定義標簽的context,只要 xx(){} 這樣聲明的函數,context都被指定為標簽的context
可通過this.tick訪問 tick 函數
this.update
必須調用 this.update(); UI的內容才會更新。
可能會覺得沒其它MV*的引擎自動化,但是,手動控制返回會更加靈活
opts
代碼中,有個很奇怪的變量opts:
[code]this.index = opts.start || 0;
[code]<timer start="10"></timer>
支持引用外部標簽定義文件
[code]<script src="todo.tag" type="todo/tag"></script>
todo.tag的內容和編譯,按照上面例子編寫即可。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com