Knockout.js 强制更新受限制的计算属性
我有一个表单,其中文本输入绑定到computed属性(包含时间)。用户输入一个值后,它将被解析为一个包含总分钟数的整数值 由于这不是一个简单的函数(有许多格式化时间的方法),因此该属性具有 这一切都很好,问题是当用户输入一个值并立即点击保存按钮时,显然还没有计算限制值Knockout.js 强制更新受限制的计算属性,knockout.js,knockout-3.0,Knockout.js,Knockout 3.0,我有一个表单,其中文本输入绑定到computed属性(包含时间)。用户输入一个值后,它将被解析为一个包含总分钟数的整数值 由于这不是一个简单的函数(有许多格式化时间的方法),因此该属性具有 这一切都很好,问题是当用户输入一个值并立即点击保存按钮时,显然还没有计算限制值 self.totalMinutes = ko.observable(0); self.totalMinutesValue = ko.computed({ read: function() { return
self.totalMinutes = ko.observable(0);
self.totalMinutesValue = ko.computed({
read: function() {
return MinutesToFormat(self.totalMinutes());
}
write: function(value) {
self.totalMinutes(FormatToMinutes(value));
}
}).extend({ throttle: 250 });
self.Save = function() {
// Send self.totalMinutes() to server, need to ensure the throttled
// computed has been written.
}
有没有一种简单的方法可以从send方法强制立即更新属性?我可以添加一个
setTimeout
,但这当然远远不够理想。似乎RateLimitor实际上可以解决这个问题
“对可观察对象的写入不会延迟;可观察对象的值是
立即更新。对于可写的计算观察值,这意味着
写入功能总是立即运行。
所有更改通知都会延迟,包括在调用时
valueHasMutated为手动。这意味着您不能使用valueHasMutated为
强制速率受限的可观察对象通知未更改的值
默认速率限制方法不同于节流阀
算法。要匹配油门行为,请使用
notifyWhenChangesStop方法。“
对速率受限的计算可观测值的评估不是速率受限的;
如果您读取它的值,它将重新评估。
我没有太多地使用油门,但在3.1中,我认为建议您使用rateLimit extender。也许这能解决问题-