Knockout.js 逐个单击按钮从ObservalArray加载数据

Knockout.js 逐个单击按钮从ObservalArray加载数据,knockout.js,Knockout.js,我刚刚遇到了一个很好的knockout.js示例代码,我正在学习。所以我很想了解代码流。当我试着阅读代码时,我坚持去理解一个特定的领域。这里是jsFiddle链接,任何人都可以从这里看到完整的代码 单击“下一步”或“上一步”按钮时,这两个函数将从这两个例程调用prevQuestion&nextQuestion,questionIndex值将发生更改,相应的问题和答案集也将发生更改 我的问题是,问题和问题索引之间没有联系,所以我想知道问题索引什么时候发生变化,那么问题集是如何变化的 请帮助我理解当

我刚刚遇到了一个很好的knockout.js示例代码,我正在学习。所以我很想了解代码流。当我试着阅读代码时,我坚持去理解一个特定的领域。这里是jsFiddle链接,任何人都可以从这里看到完整的代码

单击“下一步”或“上一步”按钮时,这两个函数将从这两个例程调用
prevQuestion&nextQuestion
questionIndex
值将发生更改,相应的问题和答案集也将发生更改

我的问题是,
问题和问题索引
之间没有联系,所以我想知道
问题索引
什么时候发生变化,那么问题集是如何变化的

请帮助我理解当我们点击下一步或上一步按钮时,新的或旧的问题集是如何加载的


谢谢

问题不会改变,只有当前问题会改变,因为它是一个值


它取决于
questionIndex
,所以每次
questionIndex
被更改时
currentQuestion
都会被重新计算。

老实说,我只是不理解流程。如果可能的话,请指导我当用户单击“下一步”和“上一步”按钮时如何加载问答。thanks@Thomas,要了解它是如何基于上述答案工作的,请阅读knockoutjs中的观察值和计算机观察值。
//this two area now clear
  this.currentQuestion = ko.computed(function(){
     return self.questions()[self.questionIndex()];
  });

this.nextQuestion = function(){
  var questionIndex = self.questionIndex();
  if(self.questions().length - 1 > questionIndex){
    self.questionIndex(questionIndex + 1);
  }
};

this.prevQuestion = function(){
  var questionIndex = self.questionIndex();
  if(questionIndex > 0){
    self.questionIndex(questionIndex - 1);
  }
};
this.currentQuestion = ko.computed(function(){
     return self.questions()[self.questionIndex()];
});