从observableArray逐个点击按钮加载数据

时间:2015-06-04 14:24:22

标签: knockout.js

我刚刚遇到了一个很好的knockout.js示例代码,我正在学习。所以我很想了解代码流。当我尝试阅读该代码时,我坚持理解一个特定的区域。这是jsFiddle链接,任何人都可以看到完整的代码http://jsfiddle.net/rustam/SSBZs/

//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);
  }
};

当点击下一个或上一个按钮时,这两个函数被调用prevQuestion & nextQuestion从这两个例程questionIndex值开始变化,因此问答集正在改变。

我的问题是questions and questionIndex之间没有链接,所以我想知道questionIndex何时发生变化,然后问题集的变化情况如何?

请帮助我了解当我们点击下一个或上一个按钮时如何加载新旧问题集。

由于

1 个答案:

答案 0 :(得分:2)

问题没有改变,只有当前问题发生了变化,因为它是computed值。

this.currentQuestion = ko.computed(function(){
     return self.questions()[self.questionIndex()];
});

这取决于questionIndex,因此每次更改questionIndex时都会重新计算currentQuestion