vue中v-for方法的详解

Vue干货 小白 暂无评论

用法:
基于源数据多次渲染元素或模板块。此指令之值,必须使用特定语法 alias in expression ,为当前遍历的元素提供别名:


<div v-for="item in items">
  {{ item.text }}
</div>
另外也可以为数组索引指定别名 (或者用于对象的键):

<div v-for="(item, index) in items"></div>
<div v-for="(val, key) in object"></div>
<div v-for="(val, key, index) in object"></div>
v-for 默认行为试着不改变整体,而是替换元素。迫使其重新排序的元素,你需要提供一个 key 的特殊属性:

<div v-for="item in items" :key="item.id">
  {{ item.text }}
</div>

拼接字符串innerHTML
vue提供了一个指令 v-for 解决循环问题 更高效 会复用原有的结构


<div id="app">
<!--要循环谁就在谁的身上增加v-for属性-->
    <!--默认是value of 数组 / (value,index) of 数组-->
    <ul>
        <li v-for="(fruit,index) in fruits">{{fruit.name}}.{{index+1}}
            <ul>
                <li v-for="(c,childIndex) in fruit.color">{{index+1}}.{{childIndex+1}}{{c}}</li>
            </ul>
        </li>
    </ul>
    <div v-for="c in 'aaa'">{{c}}</div>
    <div v-for="c in 5">{{c}}</div>
    <div v-for="(value,key,index) in obj">{{key}}:{{value}}:{{index}}</div>
</div>

<script>
    let vm=new Vue ({
        el:"#app",
        data:{
            obj:{name:"hh",age:9,address:"xxx"},
            fruits:[
                {name:"葡萄",color:["green","yellow"]},
                {name:"苹果",color:["red","green","yellow"]},
                {name:"火龙果",color:["pink"]}]
        }
    })
</script>

使用 v-for 遍历数组生成元素

我们可以使用 v-for 指令,将一个数组渲染为列表项。v-for 指令需要限定格式为 item in items 的特殊语法,其中,items 是原始数据数组(source data array),而 item 是数组中每个迭代元素的指代别名(alias):


<ul id="example-1">
  <li v-for="item in items">
    {{ item.message }}
  </li>
</ul>
var example1 = new Vue({
  el: '#example-1',
  data: {
    items: [
      { message: 'Foo' },
      { message: 'Bar' }
    ]
  }
})
结果:
Foo
Bar

在 v-for 代码块中,我们可以完全地访问父级作用域下的属性。v-for 还支持可选的第二个参数,作为当前项的索引。


<ul id="example-2">
  <li v-for="(item, index) in items">
    {{ parentMessage }} - {{ index }} - {{ item.message }}
  </li>
</ul>
var example2 = new Vue({
  el: '#example-2',
  data: {
    parentMessage: 'Parent',
    items: [
      { message: 'Foo' },
      { message: 'Bar' }
    ]
  }
})
结果:
Parent - 0 - Foo
Parent - 1 - Bar
你还可以不使用 in,而是使用 of 作为分隔符,因为它更加接近 JavaScript 迭代器语法:
`<div v-for="item of items"></div>`
使用 v-for 遍历对象

也可以使用 v-for 来遍历对象的属性。


<ul id="v-for-object" class="demo">
  <li v-for="value in object">
    {{ value }}
  </li>
</ul>
new Vue({
  el: '#v-for-object',
  data: {
    object: {
      firstName: 'John',
      lastName: 'Doe',
      age: 30
    }
  }
})
结果:
John
Doe
30
还可以提供第二个参数,作为对象的键名(key):
<div v-for="(value, key) in object">
  {{ key }}: {{ value }}
</div>
firstName: John
lastName: Doe
age: 30
然后第三个参数作为索引(index):
<div v-for="(value, key, index) in object">
  {{ index }}. {{ key }}: {{ value }}
</div>
0. firstName: John
1. lastName: Doe
2. age: 30

在遍历一个对象时,是按照 Object.keys() 得出 key 的枚举顺序来遍历,无法保证在所有 JavaScript 引擎实现中完全一致。

转载请注明: Vue教程中文网 - 打造国内领先的vue学习网站-vue视频,vue教程,vue学习,vue培训 » vue中v-for方法的详解

喜欢 ()or分享