Ну и что что отдельный компонент? Не надо зашивать данные блоков в data, вместо этого следует сделать их параметром. Тогда можно будет использовать в разных компонентах один и тот же объект.
А почему вы решили, что с помощью v-for нельзя сделать разную разметку в разных блоках? Можно. Например, каждый блок может быть отдельным компонентом. Типа так.
Это и есть "зацикливание". Переменная currlEl хранит в себе индекс текущего активного элемента. Чтобы получить следующий элемент, мы её увеличиваем на единицу. А чтобы после последнего элемента получать нулевой - берём остаток от деления на количество элементов.
Разумеется, можно было бы просто увеличивать на единицу, а потом проверять не равен ли currEl длине массива elements, и если да, то сбрасывать currEl в 0. Как-то так:
Вячеслав, да, я вижу вариант выше - там отслеживается последняя кликнутая textarea. Каким образом это позволит устанавливать в кликнутое состояние несколько полей ввода сразу - непонятно.
UPD. А-а-а, понял, что вы имели в виду под "находится могут несколько" - вообще, а не одновременно, как я подумал. Да, затупил я.
lavezzi1, если добавить имена элементам - не пустая. Можете перебрать значения с помощью formData.values, получить конкретное значение с помощью formData.get и т.д. и т.п.
Или vuex использовать. В общем, варианты есть.