@ubuntu-men

Каким образом можно откатить изменённый массив?

В цикле выводится список элементов с кнопками. Структура:
pollList: [
        {
          id: 1,
          title: 'Кнопка 1',
          class: 'survey-btn-success',
          children: [
            {
              id: 39,
              title: 'Кнопка 1',
              class: 'survey-btn-success',
            },
            {
              id: 40,
              title: 'Кнопка 2',
              class: 'survey-btn-danger',
            }
          ],
        },
        {
          id: 2,
          title: 'Кнопка 2',
          class: 'survey-btn-warning',
          children: [
            {
              id: 37,
              title: 'Кнопка 1',
              class: 'survey-btn-danger',
            },
            {
              id: 285,
              title: 'Кнопка 2',
              class: 'survey-btn-warning',
            },
            {
              id: 286,
              title: 'Кнопка 3',
              class: 'survey-btn-danger',
            },
            {
              id: 38,
              title: 'Кнопка 4',
              class: 'survey-btn-danger',
            },
          ],
        },
        {
          id: 3,
          title: 'Кнопка 3',
          class: 'survey-btn-danger'
        },
      ].

<app-survey-button
    v-for="(item) in pollList" :key="item"
    :id="item.id"
    :title="item.title"
    :button-class="addActiveClass(item.class, item.id)"
    @click="selectSurvey(item.id, item.children)"
></app-survey-button>


Метод selectSurvey
selectSurvey (id, itemChildren) {
  this.selectedId = id
  this.pollList = itemChildren;
  this.activeStep++
},


У некоторых кнопок есть элемент children, при клике на кнопку проверяется, если есть children, выводится список элементов children. Таким образом начальный массив pollList меняется на item.children и показывается вторая страница. Так же есть кнопки "назад" и "далее". Подскажите, каким образом в текущей реализации можно при клике на кнопку "назад" вернуть первоначальный вид массива pollList, то есть первую страницу.
62c439471e696325332319.png
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
каким образом в текущей реализации можно при клике на кнопку "назад" вернуть первоначальный вид массива pollLis

Никаким. Записывая в свойство pollList новое значение, старое вы теряете безвозвратно.

Переделывайте. Как? Есть такая структура данных - стек называется. Гуглите, читаете, что это такое. И применяете:

Данные текущего списка лежат наверху стека (можно оформить в виде вычисляемого свойства). Хотите перейти к вложенному списку - кладёте его в стек. Надо вернуться - делаете pop. Кнопка "назад" - блокировать или не отображать, если размер стека меньше двух.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
А вот сделал бы плоский список "страниц" с графом переходов - такой проблемы бы не было. Запоминал бы предыдущие "ответы" в массив, при перевыборе в предыдущем вопросе отрубал бы хвост, если ответ ведет по другому пути.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы