I'm two levels deep in arrays using Vue JS and I need an index that starts at 0 and increments for each item in the top array.
Here is my HTML:
<div v-for="member in cast"> <!--array #1-->
<input name="cast_list[@{{ memberCounter }}][actor]" value="@{{ member.actor }}">
<input name="cast_list[@{{ memberCounter }}][role]" value="@{{ member.role }}">
<div v-for="group in ensemble_groups"> <!--array #2-->
<input type="checkbox"
name="cast_list[@{{ memberCounter }}][groups][]"
value="@{{ group }}"
v-model="member.groups"
id="g-@{{ memberCounter }}-@{{ $index }}">
<label for="g-@{{ memberCounter }}-@{{ $index }}">@{{ group }}</label>
</div>
</div>
and my Vue JS:
data: {
ensemble_groups: [{{ ensemble_groups }}"{{ group_name }}",{{ /ensemble_groups }}],
cast: [
{{ cast_list }}
{
actor: '{{ actor }}',
role: '{{ role }}',
groups: [{{ groups }}"{{ value }}",{{ /groups }}],
counter: 0 // trying to set default value
},
{{ /cast_list }}
],
},
computed: {
memberCounter: function() {
return this.counter++;
},
},
You can see I'm trying to define a computed property as my counter, but it's not behaving how I need it. @{{ $index }}
would work except within my 2nd array it gets looped as 0,1,2,3
over and over instead of holding fast to the incremental value of my first array.