1. 迭代数组

   <ul>
     <li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name}} --- 年龄:{{item.age}}</li>
   </ul>
  1. 迭代对象中的属性

     <!-- 循环遍历对象身上的属性 -->
    
     <div v-for="(val, key, i) in userInfo">{{val}} --- {{key}} --- {{i}}</div>
    
  2. 迭代数字

    <p v-for="i in 10">这是第 {{i}} 个P标签</p>

2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的。

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。

Vue指令之v-if和v-show 一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。 品牌管理案例添加新品牌删除品牌根据条件筛选品牌 1.x 版本中的filterBy指令,在2.x中已经被废除:

filterBy - 指令

<tr v-for="item in list | filterBy searchName in 'name'">
 
  <td>{{item.id}}</td>
 
  <td>{{item.name}}</td>
 
  <td>{{item.ctime}}</td>
 
  <td>
 
    <a rel="nofollow" href="#" @click.prevent="del(item.id)">删除</a>
 
  </td>
 
</tr>

在2.x版本中手动实现筛选的方式:

筛选框绑定到 VM 实例中的 searchName 属性:

<hr> 输入筛选名称:
 
<input type="text" v-model="searchName">

在使用 v-for 指令循环每一行数据的时候,不再直接 item in list,而是 in 一个 过滤的methods 方法,同时,把过滤条件searchName传递进去:

search 过滤方法中,使用 数组的 filter 方法进行过滤:

search(name) {
 
  return this.list.filter(x => {
 
    return x.name.indexOf(name) != -1;
 
  });
 
}