首頁 >web前端 >js教程 >riot.js 學習【一】自訂標籤

riot.js 學習【一】自訂標籤

黄舟
黄舟原創
2017-01-16 15:59:441328瀏覽

Riot.js最強的功能,莫過於自訂標籤,先來一段程式碼,看個效果:

[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]: 

riot.js 學習【一】自訂標籤

說一下,新人會遇到的坑:

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;
其實它的值,就是this. opts,是自訂標籤傳入的屬性。 
如:
[code]<timer start="10"></timer>
那 this.opts.start/opts.start 就等於 10
{ index } 
riot.js強大的讀值方法,它支援簡單的表達式,三元判斷。但有一個坑,{}裡,要用單引號'代替雙引號”,不然超級容易解析出錯。 
像{ index || 10 }, { index > 10 ? '老頭' : '小屁孩' },都可以支援

支援引用外部標籤定義檔

[code]<script src="todo.tag" type="todo/tag"></script>


todo.Aps一】自訂標籤的內容,更多相關內容請關注PHP中文網(www.php.cn)!



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