vue中v-for和v-if不能同时使用的问题

vue中我们遍历一个列表for循环是作用在dom节点上的,

我们在遍历列表的时候可能需要进行判断哪些显示哪些隐藏

1、错误代码如下,这样写的话,我们编辑器也会告诉你不能这样写

<ul>
    <li 
        v-for="user in users" 
        v-if="user.isActive" 
        :key="user.value"
         >
        {{user.label}}
    </li>
</ul>    

2、分析原因:当 Vue 处理指令时, v-if 比 v-for 具有更高的优先级,v-if无法访问v-for里面变量

 

3、代码修正

(1)使用空标签 template,让for循环在template上面;

<ul>
    <template v-for="user in users" >
        <li v-if="user.isActive" :key="user.value">
            {{user.label}}
        </li>
    </template>
</ul>

(2)使用compted先计算完属性再去渲染模版

computed: {
    activeUsers: function () {
        return this.users.filter( (user)=> {
            return user.isActive;
        })
    }
}

 

posted @ 2021-04-13 18:06  程序員劝退师  阅读(1394)  评论(0编辑  收藏  举报