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. macos - mac下docker如何設置代理2. java - 請問在main方法中寫成對象名.屬性()并賦值,與直接參參數賦值輸錯誤是什么原因?3. MySQL數據庫中文亂碼的原因4. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””5. docker不顯示端口映射呢?6. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?7. android studio總是在processes running好久8. angular.js - 關于$apply()9. docker-compose 為何找不到配置文件?10. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下
