在我的一个使用带有 knockoutjs 的 jquery 的 MVC3 项目中,我使用 knockoutjs 来绑定列表框。
当列表框有几个项目时,单击一个项目会立即选择该项目,但是当列表框有很多项目(6000+)时,需要10-15秒才能选择该项目。
用户不知道在这 10-15 秒内发生了什么,所以我们想实现一个忙碌指示器。
这可能吗?有这方面的活动吗?有没有更好的办法?
在我的一个使用带有 knockoutjs 的 jquery 的 MVC3 项目中,我使用 knockoutjs 来绑定列表框。
当列表框有几个项目时,单击一个项目会立即选择该项目,但是当列表框有很多项目(6000+)时,需要10-15秒才能选择该项目。
用户不知道在这 10-15 秒内发生了什么,所以我们想实现一个忙碌指示器。
这可能吗?有这方面的活动吗?有没有更好的办法?
如果select
元素正在使用options
绑定,则可能是因为每次单击时绑定都会更新。您可以尝试升级到刚刚发布的 2.3.0 或 3.0.0 测试版。我很确定这会解决问题。
您可以为此
ViewModel使用下一个构造
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>