您可能感興趣的東西,證明計算觀測頁面上的淘汰賽文檔。您可以使用observable來存儲當前頁面,例如一個數字,然後使用'next'和'back'按鈕來增加或減少該數字。
每個頁面都可以通過將內容包裝到一些虛擬挖空元素中來顯示和隱藏。例如:
<!--ko if: step() == 0-->
<div>First page content...</div>
<!--/ko-->
<!--ko if: step() == 1-->
<div>Second page content...</div>
<!--/ko-->
<!--ko if: step() == 2-->
<div>Third page content...</div>
<!--/ko-->
在每一頁具有被數據綁定到各種可觀察到的性質,因此視圖模型填充作爲用戶導航通過控件。在最後一頁,或準備完成時,只需將所有值都拉入數據庫的JSON對象。
我已經包含了一個演示此行爲的代碼片段(儘管不是非常漂亮的方式)。我使用/引用完整的源代碼是在這裏:http://knockoutjs.com/documentation/computed-pure.html
function AppData() {
this.firstName = ko.observable('John');
this.lastName = ko.observable('Burns');
this.prefix = ko.observable('Dr.');
this.computedLog = ko.observable('Log: ');
this.fullName = ko.pureComputed(function() {
var value = this.prefix() + " " + this.firstName() + " " + this.lastName();
// Normally, you should avoid writing to observables within a pure computed
// observable (avoiding side effects). But this example is meant to demonstrate
// its internal workings, and writing a log is a good way to do so.
this.computedLog(this.computedLog.peek() + value + '; ');
return value;
}, this);
this.step = ko.observable(0);
this.next = function() {
this.step(this.step() === 2 ? 0 : this.step()+1);
};
};
ko.applyBindings(new AppData());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<!--ko if: step() == 0-->
<p>First name: <input data-bind="textInput: firstName" /></p>
<!--/ko-->
<!--ko if: step() == 1-->
<p>Last name: <input data-bind="textInput: lastName" /></p>
<!--/ko-->
<!--ko if: step() == 2-->
<div>Prefix: <select data-bind="value: prefix, options: ['Mr.', 'Ms.','Mrs.','Dr.']"></select></div>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
<!--/ko-->
<p><button type="button" data-bind="click: next">Next</button></p>
<div class="log" data-bind="text: computedLog"></div>
感謝您的幫助,肯定有助於我在我的學習之旅:) –