列表渲染

1. v-for指令基于一个数组对列表进行渲染

item in items 在items中是原始的数据,而item则是数据中被迭代的数组元素的别名

v-for语句中,我们可以访问$data中的所有属性,也就相当于items作用域的属性

<li v-for="(item, index) in items">
    {{ parentMessage }} - {{ index }} - {{ item.message }}
  </li>

vm.$data={
    items:[],
    paraentMessage:"somethings"
}
// v-for中的in可以被of代替

2.基于对象进行遍历

<ul id="v-for-object" class="demo">
  <li v-for="value in object">
    {{ value }}
  </li>
</ul>
vm.$data.Object={
      title: 'How to do lists in Vue',
      author: 'Jane Doe',
      publishedAt: '2016-04-10'
    }

同样可以遍历对象中的键名和索引

3.关于v-for的维护

​ 为了让Vue能够跟踪每个节点,就需要为每一项提供一个唯一的key属性,除了那种遍历输出到DOM的操作外,作者都建议提供一个唯一的键

4.数组更新的检测

  • 4.1 原数组发生改变的方法

    • push() 添加新的元素到数组尾部

    • pop() 删除数组尾部元素

    • shift() 删除数组头部元素

    • unshift() 添加新的元素到数组头部

    • splice() 用于添加或删除数组中的元素

    • sort()

    • reverse()

  • 4.2 不改变原始数组的方法

    这样要改变原始数组的话,就只能将得到的数组赋值给原始数组,由于vue考虑到重用性,这种替换的方法还是很高效的。并不一定会丢弃现有的DOM去渲染整个列表

    • filter()

    • concat()

    • slice()

  • 4.3 注意事项

    由于javascripte的限制,当对数组做以下的操作时,并不能够响应式的更新DOM

    正确的方法

5. 对象变更时注意事项

​ :warning:对于已经创建的vue实例对象,Vue是不允许添加根级别的响应属性的,但是还是可以使用vue.set()方法向对象中添加响应式的属性

6.在中使用v-for

​ 与v-if的效果类似,带有v-for的将会循环的渲染多个元素的内容

​ 不仅可以显示的使用Vue的组件,还可以在标签元素中使用is=组件名来避开浏览器的解析错误

这里的li标签将会被解析为Vue中注册的组件 todo-item

Last updated

Was this helpful?