VueJS和Laravel Blade - 在嵌套的v-for循环中递增计数器

时间:2017-01-26 12:07:53

标签: laravel increment blade vue.js

我正在使用v-for创建一个对象的人员列表,每个人都分配了一个编号。这是一个简化的例子:

home.js:

data: function () {
        return {
            agegroups: {
                adult: 3,
                child: 1,
                infant: 2
            }
        }
    },

home.blade.php:

<ul>
    <template v-for="(num, agegroup) in agegroups">
        <li v-for="index in num">
            @{{ index }}
        </li>
    </template>
</ul>

这产生1 2 3 1 1 2

但是,我希望它能产生1 2 3 4 5 6

如何做到这一点?似乎可以通过一个简单的计数器轻松实现,但我该把它放在哪里?

1 个答案:

答案 0 :(得分:0)

在这里:https://jsfiddle.net/mimani/7o4k0gf2/

<强> JS

new Vue({
  el: '#app',
  mounted () {
    var sum = 0
    for (const key of Object.keys(this.agegroups)) {
      sum += this.agegroups[key]
        this.offset.push(sum)
        }
  },
  data: {
    agegroups: {
      adult: 3,
      child: 1,
      infant: 2
    },
    offset: [0]
  }
});

<强> HTML

  <ul>
    <template v-for="(num, agegroup, idx) in agegroups" v-init="getOffset(num)">
      <li v-for="index in num">
         {{offset[idx] + index}}
      </li>
    </template>
  </ul>

我必须创建一个基于agegroups预先填充的变量来跟踪早期索引,然后将其添加到嵌套for循环的索引中。