搜索

首页  >  问答  >  正文

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>
给我你的怀抱给我你的怀抱2800 天前871

全部回复(8)我来回复

  • 为情所困

    为情所困2017-05-16 13:22:30

    雷雷

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:22:30

    雷雷

    回复
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:22:30

    <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是奇数的时候怎么办

    回复
    0
  • 某草草

    某草草2017-05-16 13:22:30

    index是从0开始的

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:22:30

    我怎么感觉你这样写和全部循环没有区别啊。。。

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 13:22:30

    你的需求具体是什么,看你的代码并不能看出什么

    下面是不是你要的东西?
    这一个计算属性,把数组拆分成两个数组放入一个数组

    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>

    回复
    0
  • 高洛峰

    高洛峰2017-05-16 13:22:30

    能直接用模版语法的,就不要做额外计算:

    <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>

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 13:22:30

    额?这是为了分组显示吗?

    <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>
    

    回复
    0
  • 取消回复