avalon2學習教程08插入移除操做

本節介紹的ms-if指令與ms-visible很類似,都是讓某元素「看不見」,不一樣的是ms-visible是經過CSS實現,ms-if是經過移除插入節點實現。html

ms-if的用法與1.×時別無二致,只要值是真,就插入,爲假時,就在原位置上替換爲一個註釋節點作佔位符。oop

注意: 在avalon1.*中,存在一個叫ms-if-loop的輔助指令,這個在2.0移除了,這個直接使用filterBy過濾器就能實現類似功能。ui

<!DOCTYPE HTML>
<html>
    <head>
        <title>ms-if</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="./dist/avalon.js" ></script>
        <script>
            var vmodel = avalon.define({
                $id: "test",
                object: {}
            })

            setTimeout(function() {
                vmodel.object = {id: "132", message: "顯示!!"}
            }, 3000)

            setTimeout(function() {
                vmodel.object = {}
            }, 5000)

        </script>
    </head>
    <body>
        <div ms-controller="test" >
            這是比較輸出結果:{{@object.id != null}}
            <div ms-visible="@object.id != null">
                這是visible的:
                <span>{{@object.message}}</span>
            </div>
            <div ms-if="@object.id != null">
                這是if的:
                <span>{{@object.message}}</span>
            </div>
        </div>
    </body>
</html>

圖片描述

如今咱們用ms-if從新作一下切換卡吧spa

<!DOCTYPE html>
<html>
    <head>
        <title>ms-if</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <script src="./dist/avalon.js"></script>
        <script >
            var vm = avalon.define({
                $id: "test",
                curIndex: 0, //默認顯示第一個
                buttons: ['aaa', 'bbb', 'ccc'],
                panels: ["<div>面板1</div>", "<p>面板2</p>", "<strong>面板3</strong>"]
            })

        </script>
        <style>
            button{
                margin:1em 3em;
            }
            .panel div{
                height:200px;
                background: #a9ea00;
            }
            .panel p{
                height:200px;
                background: green;
            }
            .panel strong{
                display:block;
                width:100%;
                height:200px;
                background: #999;
            }
        </style>
    </head>
    <body ms-controller="test" >
        <div>
            <button ms-for='(i, el) in @buttons' ms-click='@curIndex = i'>{{el}}</button>
        </div>
        <div class='panel' ms-for='(jj, el) in @panels' ms-if='jj === @curIndex' ms-html='el'></div>
    </body>
</html>

圖片描述

相關文章
相關標籤/搜索