2015-06-04 61 views
0

我剛剛遇到了一個很好的示例代碼knockout.js,我正在學習。所以我很想了解代碼流。當我嘗試閱讀該代碼時,我堅持瞭解特定區域。這裏是任何人都可以看到完整的代碼http://jsfiddle.net/rustam/SSBZs/從observableArray一個一個的點擊按鈕加載數據

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

當點擊一個或下一個按鈕,然後這兩功能正從這兩例行questionIndex值稱爲prevQuestion & nextQuestion是得到改變,並相應地自問自答集的jsfiddle鏈接在改變。

我的問題是questions and questionIndex之間沒有任何聯繫,所以我想知道questionIndex正在發生變化,那麼問題集如何改變?

請幫我理解,當我們點擊next或prev按鈕時,新舊問題集是如何加載的。

感謝

回答

2

問題並沒有改變,目前唯一的問題是得到改變,因爲它是一個computed值。

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

而且它依賴於questionIndex,所以每次questionIndex改變currentQuestion重新計算。

+0

很老實,我只是不理解流程。如果可能的話,指導我如何加載問題和答案,當用戶點擊next和prev按鈕的簡單方法。謝謝 – Thomas

+2

@Thomas,基於上述答案瞭解它是如何工作的,請閱讀有關knockoutjs中的可觀察項和計算機可觀察項。 –