通过给每条数据添加字段的方法

html示例

设置一个原数据不存在的 属性(isShow)

代码

<div class="nav-details" id="app">

    <transition-group enter-active-class="animated  fadeInDown">
        <div v-for="item in coursesData" v-show="isShow" :key="item.id">
            <div class="system-item">
                <div class="system-item-show">
                    <a :href="item.url" class="system-show-img">
                        <img :src="item.cover" onerror="this.src='/static/mobile/user/images/system-1.png'" alt="">
                    </a>
                    <div class="system-show-text">
                        <h4  v-cloak >{{item.title}}</h4>
                        <p v-text="item.lastTitle"></p>
                        <div class="system-show-btn">
                            <span class="system-btn-b" @click="isShow(item,$event)">展开</span>
                            <a :href="item.url">继续学习</a>
                        </div>
                    </div>
                </div>
                <ul class="system-item-hide clearfix" v-show="item.isShow">
                    <li v-for="c in item.children">
                        <div class="system-hide-abs"></div>
                        <a :href="item.url" class="system-hide-img">
                            <img :src="c.cover" onerror="this.src='/static/mobile/user/images/system-2.png'" alt="">
                        </a>
                        <div class="system-hide-text">
                            <h5  v-cloak >{{c.title}}</h5>
                            <div class="system-hide-jdt"><span :data-val="c.percent"></span></div>
                            <div class="system-hide-btn">
                                <p  v-cloak >已学{{c.percent}}</p>
                                <a :href="c.url"><i class="fa fa-caret-right"></i>继续学习</a>
                            </div>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </transition-group>
</div>

js代码,设置属性值为false并且取反

    methods:{
        isShow(item,event){
            if(!item.isShow){
                this.$set(item,'isShow',false)
                item.isShow=!item.isShow;
            }else{
                item.isShow=!item.isShow;
            }
        }
        ,

注意点

css这个属性不要设置 display:none; 否则v-show不生效。

Last modification:October 11, 2020
如果觉得我的文章对你有用,请随意赞赏