Wil*_*lem 6 knockout.js knockout-3.0
我有一个文本输入绑定到计算属性(包含时间)的表单.用户输入值后,会将其解析为包含总分钟数的整数值.
由于这不是一个简单的功能(格式化时间有很多种方法),因此该属性具有一个Throttle Extender.
这一切都运行正常,问题是当用户输入一个值并立即点击保存按钮时,显然尚未评估限制值.
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.
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以强制属性立即从send方法更新?我可以添加一个,setTimeout但这当然远非理想.
看来rateLimiter实际上可以解决这个问题。
\n\nhttp://knockoutjs.com/documentation/rateLimit-observable.html
\n\n\n\n"对 observable 的写入不会延迟;observable\xe2\x80\x99s 值会立即更新。对于可写的计算 observable,这意味着 write 函数总是立即运行。
\n\n所有更改通知都会延迟,包括手动调用\n valueHasMutated 时。这意味着您可以\xe2\x80\x99t 使用 valueHasMutated 来强制速率受限的可观察值通知未更改的值。
\n\n默认速率限制方法与节流算法不同。要匹配限制行为,请使用\n notifyWhenChangesStop 方法。”
\n\n速率限制的计算可观察量的评估是\xe2\x80\x99t 速率限制的;\n 如果您读取其值,它将重新评估。
\n
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |