[js框架]Vue框架的基础学习 三、列表渲染

v-for指令

 v-for指令根据一组数组的选项列表进行渲染。v-for 指令需要使用 item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名。

例如:

[js框架]Vue框架的基础学习 三、列表渲染

结果:

[js框架]Vue框架的基础学习 三、列表渲染


在 v-for 块中,我们拥有对父作用域属性的完全访问权限。v-for 还支持一个可选的第二个参数为当前项的索引。

[js框架]Vue框架的基础学习 三、列表渲染

结果为:

[js框架]Vue框架的基础学习 三、列表渲染

v-for可以迭代一个对象,第二个参数为键名,第三个为索引值

如:[js框架]Vue框架的基础学习 三、列表渲染

结果为:

[js框架]Vue框架的基础学习 三、列表渲染

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

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出。

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。理想的 key 值是每项都有的且唯一的 id。这个特殊的属性相当于 Vue 1.x 的 track-by ,但它的工作方式类似于一个属性,所以你需要用 v-bind 来绑定动态值 (在这里使用简写):

<div v-for="item in items" :key="item.id">

  <!-- 内容 -->

v-for with v-if

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

[js框架]Vue框架的基础学习 三、列表渲染

结果:

[js框架]Vue框架的基础学习 三、列表渲染

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