【发布时间】:2018-12-23 07:49:11
【问题描述】:
我正在尝试创建一个 HTML 表单,该表单会根据下拉列表中选择的内容更新其某些值。视图模型看起来像这样:
function RoomViewModel() {
var self = this;
self.companyOptions = @Html.Raw({ ... });
self.companyValue = ko.observable().extend({ rateLimit: 5000 });
self.companyInfo = ko.observable();
ko.computed(function() {
if (self.companyValue()) {
$.getJSON('@Html.GenerateActionLinkUrl("GetCompanyAndPlans")', {}, self.companyInfo);
}
});
}
ko.options.deferUpdates = true;
ko.applyBindings(new RoomViewModel());
然后我将select 下拉列表绑定到companyValue,如果我多次更改选择,只有在5 秒后computed 才会启动并显示当前选择的值。这接近于做我想做的事,但一个问题是第一次更改下拉列表时,您不必等待 5 秒 - 它应该立即进行 JSON 调用。速率限制是在第一次更改和 5 秒后之间停止进一步的 JSON 请求。那么如何让它立即执行 JSON 请求并更新 first 更改?
【问题讨论】:
-
这是一篇关于 Knockout 的可观察速率限制的精彩文章:knockoutjs.com/documentation/rateLimit-observable.html ~ 希望对您有所帮助。
标签: javascript ajax events knockout.js rate-limiting