Vue.js 教程

Vue.js 列表渲染(v-for 与 v-if)

注意,我们不推荐在同一元素上使用 v-if 和 v-for。

当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你只想为部分项渲染节点时,这种优先级的机制会十分有用,例如:

<!-- 内层 v-if 用来判断只显示激活的用户 -->
<li v-for="user of users" :key="user.id" v-if="user.active">
   {{ user.id }} - {{ user.name }}
</li>

上面的代码将只渲染未完成的 todo。

而如果你的目的是有条件地跳过整个循环的执行,那么可以将 v-if 置于外层元素 (或 <template>) 上。例如:

<!-- 外层 v-if 用来判断 users 是否为空和有值,没有值则不循环 -->
<ul v-if="users != null && users.length > 0">
   <!-- 内层 v-if 用来判断只显示激活的用户 -->
   <li v-for="user of users" :key="user.id" v-if="user.active">
       {{ user.id }} - {{ user.name }}
   </li>
</ul>
<div v-else>Not User</div>

示例代码

<html>
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Vue</title>
   <!-- 使用 CDN 引入 Vue 库 -->
   <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>

   <div id="app">
       <!-- 外层 v-if 用来判断 users 是否为空和有值,没有值则不循环 -->
       <ul v-if="users != null && users.length > 0">
           <!-- 内层 v-if 用来判断只显示激活的用户 -->
           <li v-for="user of users" :key="user.id" v-if="user.active">
               {{ user.id }} - {{ user.name }}
           </li>
       </ul>
       <div v-else>Not User</div>
   </div>

   <script type="text/javascript">
       var app = new Vue({
           el: "#app",
           data: {
               users: [
                   { id:100, name:"Bill", active: true },
                   { id:200, name:"Helen", active: false },
                   { id:300, name:"Tom", active: true }
               ]
           }
       });
   </script>

</body>
</html>

运行效果图:

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号