【发布时间】:2016-08-02 19:10:26
【问题描述】:
我正在考虑做一个测验,用户将看到一个“卡片”界面,其中包含简单的是/否问题和一些选择题。回答一个问题时,下一个问题会更改以适应之前的答案。
示例流程:
你想出去吃饭还是在家吃饭?我想出去吃饭。你想去韩国餐厅吃饭吗?是的。
我遇到的问题是我希望在前端没有多个路由。目前,我正在使用 Vue.js 和 Vue-Router。这就是我想要的(不要介意命名约定,只是暂时的):
<template>
<div>
<div v-show="isQuestion(0)">
<p id="question_1">Question 1</p>
<p @click="answerQuestion()">Answer 1</p>
<a @click="answerQuestion()">Answer 2</a>
</div>
<div v-show="isQuestion(1)">
<p id="question_2">Question 2</p>
<div v-show="isAnswer(0)">
<p>Game?</p>
<a @click="answerQuestion()">Yes</a>
<a @click="nextAnswer()">No</a>
</div>
<div v-show="isAnswer(1)">
<p>Read?</p>
<a @click="answerQuestion()">Yes</a>
<a @click="nextAnswer()">No</a>
</div>
<div v-show="isAnswer(2)">
<p>Redo?</p>
<a @click="resetAnswer()">Reset</a>
</div>
<a @click="search()">Search</a>
</div>
</div>
</template>
<script>
export default {
data () {
return {
question: 0,
answer: 0,
answers: {}
}
},
methods: {
answerQuestion () {
this.answers[this.question] = this.answer
this.question++
this.answer = 0
},
nextAnswer () {
this.answer++
},
resetAnswer () {
this.answer = 0
},
isQuestion (n) {
return n === this.question
},
isAnswer (n) {
return n === this.answer
}
}
}
</script>
我正在考虑的一个选项可能是将问题和答案放入数据库中,以便前端可以将它们作为 JSON 获取,然后填充所谓的“卡片”。但是我有一个问题,如何显示“正确”的下一个问题来响应先前的答案。
我不喜欢硬编码所有内容,因为这似乎是一种不好的做法,但我很难以其他任何方式做到这一点。
【问题讨论】:
-
它有帮助,但我还没有完全测试一切。当我确定它完全有效或我能想出不同的解决方案时,我会这样做。
标签: javascript html vue.js