Vue.js -实现上一个/下一个按钮来显示调查问题

bfnvny8b  于 2023-03-24  发布在  Vue.js
关注(0)|答案(1)|浏览(293)

我在Vue.js组件中有这段代码。它将在移动的应用程序上向用户显示一些调查问题。

<div class="col-12 p-0" v-for="( i, index ) in questions" :key="i">
        <p class="lead fw-bold">{{ item.question }}</p>
        <div class="form-check" v-for="(choice, index) in item.choices" :key="index">
          <input class="form-check-input" type="radio" :name="i" :value="index" @change="checkAnswer(item.questionIndex, index)" :disabled="answeredQuestions[i]">
          <label class="form-check-label" for="">{{ index }}) {{ choice }}</label>
        </div>
      </div>
export default {
  name: 'Quiz',
  data() {
    return {
      answeredQuestions: []
    }
  },
  mounted() {
    front.on('questions', (data) => { 
      console.log(data) 
      this.$store.commit('quizQuestions', data);
      this.$store.commit('contentLoaded', true);
    });
  },
  computed: {
    isLoading() {
      return this.$store.getters.showLoader;
    },
    questions() {
      return this.$store.getters.quiz;
    },
  },
  methods: {
    checkAnswer(questionIndex, choice) {
      this.answeredQuestions.push(true);
      ...
    }
  }
}

因为我想避免滚动,我想实现一个按钮,当点击时,将显示下一个问题给用户。因为我使用的是v-for,我不知道如何实现这一点,因为我知道v-ifv-for如果一起使用会发生冲突。我该如何继续?

vojdkbi0

vojdkbi01#

你可以使用Swiper和buttons来实现。或者,如果你想把每个问题和路由连接起来,你可以改变每个问题的当前路由-你只需要通过$route.push('surveyId/questionId')调用把处理程序传递给你的buttons。每个选项都可以帮助你避免使用v-if和v-for。

相关问题