在我使用jquery和knockoutjs的一個MVC3項目中,我使用了knockoutjs來綁定列表框。如何顯示繁忙指標,當點擊一個列表框中有超過6000個項目的項目時
當列表框有幾個項目時,點擊一個項目會立即選擇該項目,但是當列表框中有很多項目(6000+)時,需要10-15秒來選擇項目。
用戶不知道這10-15秒內發生了什麼,所以我們認爲要實現一個繁忙的指示器。
這可能嗎?有沒有這個事件?有沒有更好的辦法?
在我使用jquery和knockoutjs的一個MVC3項目中,我使用了knockoutjs來綁定列表框。如何顯示繁忙指標,當點擊一個列表框中有超過6000個項目的項目時
當列表框有幾個項目時,點擊一個項目會立即選擇該項目,但是當列表框中有很多項目(6000+)時,需要10-15秒來選擇項目。
用戶不知道這10-15秒內發生了什麼,所以我們認爲要實現一個繁忙的指示器。
這可能嗎?有沒有這個事件?有沒有更好的辦法?
如果select
元素使用的是options
綁定,則可能是因爲每次單擊時都會更新綁定。您可以嘗試升級到剛剛發佈的版本2.3.0或3.0.0測試版。我很確定這會解決問題。
您可以使用未來建設這個
視圖模型
var viewModel = new function()
{
var self = this;
self.items = ko.observableArray(); // your items
self.waitingResponse = ok.observable(false); // true - when you are waiting for response
self.sendRequest = function()
{
self.waitingResponse(true); // this will hide table with items
// and disaplay "Waiting for response..."
$.ajax(
{
//
complete: function()
{
self.waitingResponse(false); // this will display table with items
// and hide "Waiting for response..."
}
})
}
}
查看
<div data-bind="visible : waitingResponse()">
<span>Waiting for response...</span>
</div>
<div data-bind="visible : !waitingResponse()">
<table>
<!-- table with items -->
</table>
</div>
您曾經試圖分析代碼確切地知道什麼是採取這麼多的時間?您可以確定瓶頸的位置並修復它們,或者您可以知道如何顯示繁忙的指標。沒有更多的信息,很難告訴你如何去做。 – mael
爲什麼問一個問題,如果你不能檢查答案麻煩? –