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. javascript - 數組原聲方法中的一段代碼2. python小白的基礎問題 關于while循環的嵌套3. MySQL客戶端吃掉了SQL注解?4. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...5. 求大神幫我看看是哪里寫錯了 感謝細心解答6. javascript - 百度echarts series數據更新問題7. python - Django分頁和查詢參數的問題8. javascript - 圖片能在網站顯示,但控制臺仍舊報錯403 (Forbidden)9. php自學從哪里開始?10. phpstady在win10上運行
