五、Vue.js 循环语句
循环语句
循环使用 v-for 指令。
v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。
v-for 可以绑定数据到数组来渲染一个列表:
<div id="app"> <ol> <li v-for="site in sites"> {{ site.name }} </li> </ol> </div> <script> new Vue({ el: '#app', data: { sites: [ { name: 'Baidu' }, { name: 'Alibaba' }, { name: 'Tencent' } ] } }) </script>
模板中使用 v-for:
<ul> <template v-for="site in sites"> <li>{{ site.name }}</li> <li>--------------</li> </template> </ul>
v-for 迭代对象
v-for 可以通过一个对象的属性来迭代数据:
<div id="app"> <ul> <li v-for="value in object"> {{ value }} </li> </ul> </div> <script> new Vue({ el: '#app', data: { object: { name: 'Baidu', url: 'http://www.baidu.com', slogan: '百度一下 你就知道' } } }) </script>
你也可以提供第二个的参数为键名:
<div id="app"> <ul> <li v-for="(value, key) in object"> {{ key }} : {{ value }} </li> </ul> </div>
第三个参数为索引:
<div id="app"> <ul> <li v-for="(value, key, index) in object"> {{ index }}. {{ key }} : {{ value }} </li> </ul> </div>
v-for 迭代整数
v-for 也可以循环整数
<div id="app"> <ul> <li v-for="n in 10"> {{ n }} </li> </ul> </div>
v-for 还可以循环数组:
<div id="app"> <ul> <li v-for="n in [1,3,5]"> {{ n }} </li> </ul> </div>
v-for 默认行为试着不改变整体,而是替换元素。迫使其重新排序的元素,你需要提供一个 key 的特殊属性:
<div v-for="item in items" :key="item.id"> {{ item.text }}</div>
不仅如此,在迭代属性输出的之前,v-for会对属性进行升序排序输出:
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> <div id="app"> <ul> <li v-for="n in object"> {{ n }} </li> </ul> </div> <script> new Vue({ el: '#app', data: { object: { 2: '百度一下 你就知道', 1: '百度', 0: 'http://www.baidu.com' } } }) </script>