我正在尝试构建一个简单的测验应用。它有一些问题在数据库中。我正在使用AXIOS请求获取那些。 我正在做这样的事情:
var app = new Vue({
el:"#app",
data:{
currentQuestion:0,
question:{}
},
methods:{
next:function(){
this.currentQuestion+=1;
this.loadQuest();
} ,
loadQuest:function(){
axios.get('/questions').then((response)=>{
//console.log(response.data[this.currentQuestion]);
this.question = response.data[this.currentQuestion];
})
}
},
mounted(){
this.loadQuest();
},
});
在这里,您可以看到每当我点击下一个问题按钮时,会调用loadQuest()并将请求发送到服务器。有没有办法不在每次下一次按钮发送请求而只是增加currentQuestion变量并加载下一个问题?
答案 0 :(得分:1)
const app = new Vue({ el: '#app', data: { currentQuestion: 0, questions: [], }, mounted() { axios.get('/questions').then((response) => { // console.log(response.data[this.currentQuestion]); this.questions = response.data }) }, methods: { next () { this.currentQuestion += 1 } }, computed: { question () { return this.questions.length ? this.questions[this.currentQuestion] : {} } } })
答案 1 :(得分:0)
取决于您有多少问题,但您可以在加载请求时获取所有问题,并将它们存储在数据中声明的questions: {}
对象中。点击后直接从对象中获取问题。代码示例如下:
var app = new Vue({
el:"#app",
data:{
currentQuestion:0,
questions:{},
question:{}
},
methods:{
next:function(){
this.loadNextQuest();
this.currentQuestion+=1;
} ,
loadQuest:function(){
axios.get('/questions').then((response)=>{
//console.log(response.data[this.currentQuestion]);
this.questions = response.data;
})
},
loadNextQuest:function(){
this.question = this.questions[this.currentQuestion];
}
},
mounted(){
this.loadQuest();
},
});