avalon显示隐藏做个tab

"avalon很好的mvvm框架"

Posted by ZWW on January 10, 2017

** avalon对dom的操作很强大,学习ms-visible,ms-if语句 **

visible顾名思义,就是把它隐藏了,display:none;但是dom是没有移除的。如果用if就行判断,条件不成立就直接移除了,单纯的api只是熟悉的过程,如果写一个tab控制一下,则需要引入一个变量,判断显示隐藏。

<div ms-controller="tianzi">

    <div ms-visible="@curIndex == 1">tab1内容 </div>
    <div ms-visible="@curIndex == 2">tab2内容</div>
    <div ms-visible="@curIndex == 3">tab3内容</div>
    <p>
        <button type="button" ms-on-mouseenter='changeTab(1)' ms-class="@curIndex == 1 ? @active : ''">tab1</button>

        <button type="button" ms-on-mouseenter='changeTab(2)' ms-class="@curIndex == 2 ? @active : ''">tab2</button>

        <button type="button" ms-on-mouseenter='changeTab(3)' ms-class="@curIndex == 3 ? @active : ''">tab3</button>
    </p>
</div>

vm里面写个一切换函数,每次触发事件的时候改变对应tab的显示与隐藏,最后引入一个active变量控制一下tab的高亮状态: 当然avalon对复杂的tab已经封装成组件,可以直接引用。

avalon.ready(function () {
    var vm = avalon.define({
        $id: "tianzi",
        tian: true,
        hello: 'hello avalon',
        curIndex: 1,
        active: 'ddd',
        changeTab: function (index) {
            vm.curIndex = index;
        }
    })

    avalon.scan(document.body);
})

tab地址