javascript - vue的循環v-for如何一次循環2條項目?
問題描述
我現在是這樣實現的 但總感覺哪兒不對
<ul v-for='(item,index) in items' v-if='index%2==0'> <li>{{items[index].name}}</li> <li>{{items[index+1].name}}</li></ul>
問題解答
回答1:<!DOCTYPE html><html><head> <meta charset='UTF-8'></head><body> <p id='app'><input type='number' v-model.number='count' /><ol> <li v-for='g in groups'><ol> <li v-for='item in g'>{{ item }}</li></ol> </li></ol> </p> <script src='http://cdn.bootcss.com/vue/2.1.6/vue.min.js'></script> <script>function GroupByCount(items, count) { var len = items.length; var arr = []; var child = []; for (var i = 0; i < len; i++) {child.push(items[i]);if (child.length === count) { arr.push(child); child = [];} } if (child.length > 0) {arr.push(child); } return arr;}new Vue({ el: ’#app’, data() {return { count: 2, items: []} }, created() {this.items = Array.apply(null, Array(20)).map(function (x, i) { return i; }) }, computed: {groups() { return GroupByCount(this.items, this.count)} }}) </script></body></html>回答2:
<ul v-for='(item,index) in items'><slot v-if='index<items.length&&index%2==0'> <li >{{items[index].name}}</li> <li v-if='index<items.length-1'>{{items[index+1].name}}</li> </slot></ul>回答3:
<ul v-for='i in (items.length / 2)'> <li>{{items[(i - 1) * 2].name}}</li> <li>{{items[(i - 1) * 2 + 1].name}}</li></ul>
大概就這么個意思吧,不過有些細節需要你自己稍微再考慮一下,比如說items.length是奇數的時候怎么辦
回答4:index是從0開始的
回答5:我怎么感覺你這樣寫和全部循環沒有區別啊。。。
回答6:你的需求具體是什么,看你的代碼并不能看出什么
下面是不是你要的東西?這一個計算屬性,把數組拆分成兩個數組放入一個數組
itemsComputed (){ let arr = []; arr.push(this.items.filter((o,i)=>i%2===0)); arr.push(this.items.filter((o,i)=>i%2===1)); return arr;}
<ul><li v-for='item in itemsComputed[0]'> ...</li> </ul> <ul><li v-for='item in itemsComputed[1]'> ...</li> </ul>回答7:
能直接用模版語法的,就不要做額外計算:
<template v-for='(item,index) in items'> <ul v-if='index % 2 == 0'><li>{{items[index].name}}</li><li v-if='index < items.length'>{{items[index+1].name}}</li> </ul></template>回答8:
額?這是為了分組顯示嗎?
<template> <ul v-for='(item,idx) in b'> <li v-for='i in item'>{{i}}</li> </ul></template><script>export default { data () { return { a: [1, 2, 3, 4, 5] } }, computed: { b () { const b = [] const a = this.a for (let i = 0, l = a.length; i < l;) {b.push([a[i++], a[i++]]) } return b } }}</script>
相關文章:
1. node.js - mysql如何通過knex查詢今天和七天內的匯總數據2. mysql 插入數值到特定的列一直失敗3. 360瀏覽器與IE瀏覽器有何區別???4. Python從URL中提取域名5. mysql - 百萬行的表中是否盡量避免使用update等sql語句?6. python - 在使用Pycharm時經常看到如下的樣式,小括號里紅色的部分是什么意思呢?7. javascript - 新浪微博網頁版的字數限制是怎么做的8. 怎么在網頁中設置圖片進行左右滑動9. javascript - 豆瓣的這個自適應是怎么做的?10. javascript - 用jsonp抓取qq音樂總是說回調函數沒有定義
